среда, 25 марта 2009 г.

Как поместить DateTimePicker на ToolStrip в Windows приложении на платформе Microsoft .NET?

Чтоб поместить DateTimePicker на ToolStrip в Windows Forms приложении на платформе Microsoft .NET, нужно сделать следующее:

DateTimePicker dateTimePcr = new DateTimePicker();
toolStrip1.Items.Add(new ToolStripControlHost(dateTimePcr));

вторник, 3 марта 2009 г.

Как задействовать Gzip и Deflate HTTP компрессию в ASP.NET страницах?

Как задействовать Gzip и Deflate HTTP компрессию в ASP.NET страницах? В файле Global.asax нужно написать следующее:


<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.IO.Compression" %>

<script runat="server">
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;

if (!(app.Context.CurrentHandler is Page) ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;

if (acceptEncoding == null || acceptEncoding.Length == 0)
return;

acceptEncoding = acceptEncoding.ToLower();

if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
} else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
</script>

четверг, 19 февраля 2009 г.

Как сделать, чтобы приветсвенный е-мейл отправлялся в виде HTML с сайта на базе DotNetNuke?

Для того, чтобы в сайте, созданном на базе DotNetNuke изменить приветсвенный е-мейл, который приходит на почту зарегострировавшегося пользователя (Welcome e-mail) нужно в language editor изменить ресусную строку EMAIL_USER_REGISTRATION_PUBLIC_BODY.Text или EMAIL_USER_REGISTRATION_PRIVATE_BODY.Text, - если регистрация с подтверждением.
Ядро DotNetNuke определяет присутсвие HTML тегов в этих строках и соответственно отсылает e-mail в виде простого текста или в виде HTML.

среда, 18 февраля 2009 г.

Как показать имя отправителя в адресе при отправке е-мейла используя ASP.Net MailMessage объект?

Как показать имя отправителя в адресе при отправке е-мейла используя ASP.Net MailMessage объект?

Сделать это проще простого. Например вот так:


System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = new System.Net.Mail.MailAddress("admin of test.ru <support@test.ru>");


Этот код был использован при написании сайта калькулятор автокредита

вторник, 3 февраля 2009 г.

LINQ to SQL Как получить случайную запись из таблицы SQL Server

Мне нужно было получить случайную запись из определенной таблицы в базе данных SQL Server.
В моем случае у меня была таблицы цитат и мне нужно было случайным образом выбирать запись(или записи) для отображения на веб-сайте. Кроме того я использовал LINQ to SQL на этом сайте, таким образом решение должно использовать эту технологию и, кроме того, быть достаточно простым и универсальным.

Идея заключалась в сортировке записей по случайному параметру а затем получении TOP n количества записей. Функция NEWID() из SQL Server выглядит хорошим кандидатом для получения случайного параметра, так как она генерирует GUID.

В SQL Server, попробуйте следующий запрос:


SELECT * FROM Quote ORDER by NEWID();


SELECT TOP 1 * FROM Quote ORDER by NEWID();


Сейчас для для нашего кода мы должны сгенерировать подобное поведение на .NET. Мне нужно было получить эквивалент NEWID() в моем LINQ to SQL DBML. Отмечу, что мы не можем непосредственно использовать NEWID() в хранимой процедуре или функции, так как SQL Server выдаст ошибку: “Invalid use of side-effecting or time-dependent operator in 'newid' within a function”. В обход этого мы создадим view который использует NEWID() и функцию, которая будет выбирать из этого view.


CREATE VIEW [dbo].[RandomView]
AS
SELECT NEWID() As ID
GO
CREATE FUNCTION [dbo].[GetNewId]
(
)
RETURNS uniqueidentifier
AS
BEGIN
RETURN (SELECT ID FROM RandomView)
END
GO


В DBML, мы просто перетащим таблицу Quote, а затем функцию GetNewID в дизайнер. Следующий код выбирает случайную запись из таблицы Quotes.


DataContext db = new QuoteDataContext();
var quote = db.Quote.OrderBy(q => db.GetNewId()).First();


Фактически мы можем выбирать любое количество записей из любой таблицы.

пятница, 30 января 2009 г.

Как сделать, чтобы в DotNetNuke работала при авторизации опция "Помнить меня"

Опция "Помнить меня" ("Remember Me") при логине на сайте сделанном на DotNetNuke осуществлена посредством размещения зашифрованной аутентификационного куки (cookie) на компьютере пользователя.

Окончане срока действия этого куки контролируется сначением параметра "timeout" в в узле Forms Autentication node в конфигурационном файле web.config.

< name=".DOTNETNUKE" protection="All" timeout="60" cookieless="UseCookies">

Значение по умолчанию 60 минут, поэтому сайт не может "запомнить" кого-либо по истечении этого времени.

Для увеличения времени запоминания аутентифицированных пользователей нужно увеличить значение параметра timeout.

< name=".DOTNETNUKE" protection="All" timeout="22345" cookieless="UseCookies">

Вы можете также установить режим sliding expiration, который подразумевает то, что каждый раз, когда пользователь посещает веб-сайт до истечения срока действия аутентификационного куки, то срок действия этого куки продлевается на величину параметра "timeout". Этот режим включается так:

< name=".DOTNETNUKE" protection="All" timeout="10080" slidingexpiration="true" cookieless="UseCookies">

Посмотреть как это работает можно на этом сайте.

вторник, 13 января 2009 г.

одновременно работающий display:inline-block для Firefox, Internet Explorer и Opera

Чтобы display:inline-block корректно работало одновременно в  Internet Explorer, Opera нужно в таблице стилей пропирсать следующее:


div{
display:-moz-inline-stack;/*Нужно для Firefox*/
display:inline-block; /*Не применяется в IE и Firefox*/
_overflow:hidden;/*фикс для IE6*/
zoom:1;/*включаем hasLayout*/
*display:inline;/*при hasLayout true display:inline ведёт себя как display:inline-block*/
}

вторник, 6 января 2009 г.

Редактирование строк в ListView контроле на .NET

Если в ListView выбрать тип отображения (View) Details, и вам нужно будет редактировать значения ячеек, то вы сможете сделать это только в первой колонке.
Чтобы редактировать значения ячеек, находящихся в колонках отличных от первой, нужно имитировать редактирование, подставляя пользователю TextBox или ComboBox в том месте и с тем размером, где находится предполагаемая редактируемая ячейка. Таким образом пользователь думает, что он редактирует ячейку, а на самом деле он редактирует TextBox (или ComboBox).

ЗКак уменьшить размер базы данных MS SQL Server

На хостинг-серверах обычно существует квота для базы данных MS SQL Server. Даже если ваша база данных содержит не много данных, но идет интенсивное добавление/модификация данных, то в определенный момент размер базы данных может превысить выделенный лимит и ваш аккаунт может быть, как говорят буржуи, "suspended".
Это может произойти по причине увеличения transaction log.
Очистиь его можно командой:
BACKUP LOG [databasename] WITH TRUNCATE_ONLY

После чего нужно будет еще сделать Shrink Database.
Для примера, размер базы данных сайта, который мне доводится обслуживать, уменьшился с 890MB до 12MB.
Стоит также отметить, что до следующего бекапа ваша БД остается незащищенной (на случай отказа оборудования и т.п.), так как transaction log мы очистили.

Замечу также, что в SQL Server 2008 "WITH TRUNCATE_ONLY" не поддерживается. Поэтому очистить лог перед Shrink-ом можно переключив Recovery Model из режима Full в Simple.

среда, 24 декабря 2008 г.

Как изменить строку "You are here" в сайте на Dotnetnuke чтобы она отображалась по русски

Как изменить строку "You are here" в сайте на Dotnetnuke чтобы она отображалась по русски?

Нужно найти папку /Portals/_defauls/Skins/MinimalExtrophy/App_localResources. Там будет файл index.ascx.resx. Нужно скопировать его в файл index.ascx.ru-RU.resx, а потом в текстовом редакторе открыть этот файл и изменить там строку "You are here" на "Вы здесь".
Такое решение работает для DNN версии 4.9 и выше. Посмотреть ка это работет можно здесь