Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В одиннадцатот выпуске рассылки '.Net Собеседник' вы можете познакомиться с


Информационный Канал Subscribe.Ru

.Net Собеседник #11

Содержание
  1. От автора
  2. Обзор новостей
  3. Добавление окон сообщений в ASP.NET на стороне клиента 
  4. Время кода - Сохранение картинки из буфера обмена в файл с использованием C#
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

На этой неделе произошло одно очень странное событие - компания Microsoft одним махом уладила все разногласия с компанией Sun, судебные тяжбы по которым тянулись несколько лет. Удивляет сумма, которую Microsoft выплатит Sun - $1.6 млрд. на протяжении 10 лет. Что в действительности стоит за этим соглашением - можно только гадать, а вообще вспоминается ситуация с компанией Borland, в которую Microsoft влила $100 млн., после длительной борьбы на рынке компиляторов, СУБД и офисных приложений. Все мы знаем, во что превратилась Borland теперь, а о планах компании я писал ещё в 1 выпуске рассылки.
         В любом случае такое "полюбовное" решение проблем не может не вызвать беспокойства, если вы заинтересовались, подробнее можно почитать здесь - Informationweekв блоге Теда Ньюворда, и на ZDNet.

На этом всё - желаю интересного чтения.

{К содержанию}

Обзор новостей

  1. Много новых особенностей в SoftArtisans OfficeWriter V2
    SoftArtisans выпустила OfficeWriter V2, представив .NET-версию ExcelWriter и существенно улучшив WordWriter. OfficeWriter позволяет распространять книги Excel и документы Word в сети, без необходимости использования Microsoft Office. Версия 2 включает поддержку Template Object в ExcelWriter и поддержку множества источников данных WordWriter. OfficeWriter V2 может генерировать более 100,000 отчётов в час.
  2. AGD Studio выпстила компонент CC Processor v1.0
    "CC Processor" – компонент, разработанный на C# и предназначенный для обработки кредитных карт в реальном времени через шлюз AuthorizeNet. "CC Processor" может быть интегрирован с любым онлайновым магазином и даже с простой платёжной формой. Поддерживается также карточка реального времени Wells Fargo и eCheck посредством шлюза AuthorizeNET.
  3. ComponentOne® объявила о выходе ComponentOne Studio Enterprise™ 2004 v2
    ComponentOne объявила о выходе ComponentOne Studio Enterprise 2004 v2. Последний выпуск включает XLS для .NET, позволяя пользователям использовать в своих приложениях компоненты чтения и записи файлов Microsoft Excel; десятки новых возможностей и улучшений для продуктов, написанных для .NET и ASP.NET платформ.
  4. Active Up выпустила ActiveMail Lite V1.8
    ActiveMail Lite – облегченная версия компонента ActiveMail. ActiveMail Lite включает только поддержку SMTP. Включает: всю функциональность SMTP (отсылку почты), поддержку создания почтовой очереди, объединение письма, проверку, управление MX и DNS.
  5. Усовершенствуйте удобство использования вашими приложениями WinForms
    LaMarvin выпустила Dynamic AutoComplete Tool, .NET Framework компонент, поддерживающий автозаполнение для любого приложения WinForms. Автозаполнение поддерживается для всех стандартных компонент TextBox и ComboBox (а также их наследников), размещённых на форме или пользовательском компоненте. Поставляется с исходниками на Visual Basic .NET, доступна бесплатная версия.
  6. Aurora Validation .NET
    Компонент Aurora Validation .NET был написан с целью централизации, управляемости и портируемости проверки данных, будь то данные, введенные пользователем или уже находящиеся в источнике данных.
  7. Вышел Aspose.Component 1.0
    Набор компонент, включающий такие компоненты, как Aspose.Excel, Aspose.Word, Aspose.Project, Aspose.Pdf, Aspose.Chart, Aspose.Spell и Aspose.Recurrence.
  8. Вышел Aspose.Office 1.0
    Набор компонент, включающий компоненты для чтения и записи файлов форматов Aspose.Excel, Aspose.Word и Aspose.Project.
  9. Вышел Aspose.Project 1.0
    Aspose.Project - .NET компонент для записи документов Microsoft Project без использования самого Microsoft Project.

{К содержанию}

Добавление окон сообщений в ASP.NET на стороне клиента

Добавление окон сообщений в ASP.NET на стороне клиента

ЯЗЫК: C#
Автор статьи: Tim Stall, http://aspnet.4guysfromrolla.com/

ПЕРЕВОД: Чужа В.Ф. ака hDrummer


Вступление

Одной из полезных возможностей в приложениях Windows, которую часто используют и программисты и пользователи, является наличие окон сообщений. Два наиболее общих типа окон – окна предупреждения и подтверждения. Окно подтверждения спрашивает, хочет ли пользователь продолжить действие, обычно предлагая две возможности выбора: "OK" и "Отмена". Нажатие "OK" подтверждает действие, нажатие "Отмена" отменяет его.
Окно предупреждения просто отображает некое сообщение пользователю. Тут нет никакой возможности выбора, просто кнопка "OK" для того, чтобы пользователь мог закрыть это окно.
Использование окон сообщений в веб-приложении на стороне клиента имеет свои преимущества. В частности, отображая именно в них важную информацию, а не в метках, как это часто бывает, вы можете быть более уверены в том, что пользователь обратил на неё внимание. Например, в таком окне может быть отображена информация о том, что данные, введенные пользователем, неверны. Окно подтверждения может использоваться тогда, когда нужно убедиться в том, что пользователь хочет удалить, например, запись из БД. Окна сообщений – это простой и эффективный путь отображения сообщений пользователю, в отличие от поиска сообщений, отображаемых в виде меток на странице. Ещё один плюс в том, что пользователи уже знакомы с тем, как работать с окнами сообщений по работе с ними в приложениях Windows.
В использовании окон сообщений есть и свои минусы – во-первых, необходимо дополнительное нажатие мыши, для того чтобы закрыть это окно. Во-вторых, окна сообщений размещаются на стороне клиента, отображаясь с помощью клиентского скрипта, который может быть заблокирован пользователем. Те пользователи, которые заблокировали клиентские скрипты на своей машине, не увидят окон с сообщениями. Нужно, однако, заметить, что практически у всех веб-серферов такие скрипты разрешены.

Требования к использованию окон сообщений с ASP.NET
Дело в том, что окна сообщений создаются на клиенте и поэтому они не могут быть непосредственно созданы в коде на стороне сервера. Скорее, код на стороне сервера должен выдать соответствующий код для клиента на JavaScript вместе с отправляемым кодом на HTML таким образом, чтобы тогда, когда он попадёт по назначению, на стороне клиента отобразилось бы окно с сообщением.
В этой статье мы рассмотрим, каким образом можно создать класс, который можно будет использовать в наших классах приложения ASP.NET. Этот класс будет содержать методы для отображения окон сообщений на стороне клиента. Методы будут выдавать необходимый код на HTML и JavaScript, необходимый для отображения окна сообщений.

Отображение подтверждающего окна сообщений
Давайте начнём с того, что попробуем разобраться, как добавить подтверждающее окно сообщений, которое отобразится тогда, когда пользователь нажмёт на кнопку. До эры ASP.NET, одним из способов сделать это было добавление к событию onclick HTML-кнопки кода на JavaScript, который вызывал метод confirm().
Однако с ASP.NET мы не станем руками создавать кнопку, набирая тэг <input ID= "Text2" NAME= "Text2">для элемента HTML. Скорее, используем элемент управления [Button Web], который и сформирует соответствующий HTML-код. Затем просто программно установим свойство этого элемента управления так, чтобы он мог вызвать окно сообщения.
Чтобы проделать это, добавим элемент управления [Button Web] на страницу ASP.NET и присвоим ему ID равный BtnDelete. Если мы остановимся на этом, то [Button Web] сформирует следующий HTML-код:
<input type="submit" name= "BtnDelete" value="Delete" id= "BtnDelete" />
Этот HTML-код, однако, не содержит обработчик события onclick. То что нам в действительности нужно создать, выглядит примерно так:
<input type="submit" name="BtnDelete" value="Delete" id="BtnDelete" onclick= "return confirm('Вы уверены, что хотите удалить запись?');" />
Другими словами, нам нужно добавить ещё один атрибут к элементу <input ID= "Text2" NAME= "Text2"> и присвоить ему значение. (Точнее, мы хотим добавить атрибут onclick со значением return confirm('Вы уверены?');) К счастью, все элементы управления ASP.NET имеют свойство Attributes , свойство, содержащее коллекцию атрибутов и ассоциированных с ними значений для сформированного HTML-элемента. Свйоство Attributes имеет метод Add(key, value) , который используется для добавления нового атрибута и значения в существующий элемент управления. Итак, для того, чтобы добавить необходимый код на JavaScript к кнопке BtnDelete, мы должны добавить такой код:

private void Page_Load(object sender, System.EventArgs e)
{
BtnDelete.Attributes.Add("onclick", "return confirm('Вы уверены?');" );
}

Поскольку нам необходимо добавить этот атрибут только один раз, то мы и поместили его внутрь блока !Page.IsPostBack.

Комментарий к функции JavaScript confirm()
Клиентская функция JavaScript confirm(string) отображает подтверждающее окно сообщения со строкой, переданной в функцию. Напомню, что в таких окнах отображается как кнопка "OK", так и кнопка "Отмена". Если нажата кнопка "OK", confirm() возвращает true; иначе - false. Ключевое слово return используется для возврата результата работы этой функции. Если возвращается false, то форма не передаётся.

Если же вы планируете добавить подтверждающее сообщение в кнопки на нескольких страницах приложения ASP.NET, будет неплохо создать класс Utilities со статическим методом, принимающим в качестве параметра элемент управления [Button Web] и строку сообщения и соотвтественно устанавливающего свойство Attributes этого элемента.

using System; using System.Web.UI.WebControls;
namespace infratest
{
public class Utilities
{
public Utilities(){}

public static void CreateConfirmBox(ref Button btn, string msg)
{
btn.Attributes.Add("onclick", "return confirm('"+msg+"');" );
}
}}

Затем мы можем вызвать этот метод из нашего события Page_Load например таким образом:

Utilities.CreateConfirmBox(ref BtnDelete, "Вы уверены?");

Переместив функциональность в класс Utilities, мы легко сможем повторно использовать этот код. Такой подход похож на технологию использования включаемых файлов в классическом ASP.
Теперь, когда мы рассмотрели способ отоборажения подтверждающего окна сообщения, давайте уделим внимание отображению информирующего окна сообщения.

Отображение информирующих сообщений
Кроме возможности спросить у пользователя подтверждения неких действий, было бы не плохо иметь возможность сообщить пользователю о каких-то действиях. Например, если произошла какая-то ошибка на стороне сервера и введенные данные не были корректно сохранены, мы можем использовать окно сообщения для информирования пользователя. Как же мы можем это сделать?
Обычно это делается с использованием JavaScript – на странице создаётся обработчик события onload , где и генерируется окно сообщений. Однако, как и в предыдущем случае, ASP.NET предлагает нам альтернативный путь решения таких задач, не вдаваясь в кодирование собственно HTML-страницы.
Всё что мы хотим сделать – зарегистрировать клиентский скрипт на странице ASP.NET. Более конкретно, мы хотим запустить его при старте страницы на клиенте. К счастью, класс Page содержит метод RegisterStartupScript() – и как раз для этих целей.
Типичный план действий – пользователь отсылает данные, мы произодим над ними некие действия и понимаем, что доллжны предупредить пользователя о некотором непредусмотренном поведении. Однако, мы скорее всего должны будем добавить вызов метода RegisterStartupScript() к обработчику нажатия на элемент управления [Button Web]. Код может выглядеть примерно так:


private void BtnSave_Click(object sender, System.EventArgs e)
{
string msg;
if (CheckBox1.Checked)
{ msg = "Сохранять" ;}
else {msg = "Не сохранять";}

StringBuilder sb = new StringBuilder();
sb.Append("<scriptlanguage= JavaScript>");
sb.Append("alert('" );
sb.Append(msg);
sb.Append("');" );
sb.Append("</script>" );

if (!Page.IsStartupScriptRegistered("clientScript" )){
Page.RegisterStartupScript("clientScript" , sb.ToString());
}
}

Страница может вызвать метод CreateMessageAlert() так:

private void BtnSave_Click(object sender, System.EventArgs e)
{ string msg;
if (CheckBox1.Checked)
{
msg = "Сохранять";
}
else {msg = "Не сохранять";}

Utilities.CreateMessageAlert(this, msg, "clientScript");
}
}

    Заметьте, что при вызове метода CreateMessageAlert()мы передаем this для указания текущего обекта класса страницы. Второй параметр – сообщение для отображения в окне и третий – имя ключа для регистрации скрипта.

Этот код генерирует сообщение путём проверки неких значений (в данном случае отмечен ли CheckBox1). Однако заметьте, что сообщение может быть сгенерировано на основе любого процесса на стороне сервера – будь то результаты запроса или результат выполнения хранимой процедуры.
Имея сообщение, мы можем построить клиентский скрипт на JavaScript. Метод RegisterStartupScript() принимает два аргумента: ключ, идентифицирующий регистрируемый блок, и собственно текст скрипта. Заметьте, что второй параметр, сам скрипт, включает тэг <script>, и код на JavaScript (alert('...');). Перед вызовом RegisterStartupScript() благоразумно проверить не зарегистрирован ли уже этот скрипт. (В нашем простом примере, приведенном выше, он, конечно же, не может быть уже зарегистрирован, но если вы регистрируете блок на основе, скажем, значений из DataGrid, может случиться такое, что несколько записей попробуют зарегистрировать такой скрипт. Проверка с помощью метода IsStartupScriptRegistered() быстро поможет определить зарегистрирован ли такой скрипт или нет.)
Как и в предыдущем примере, мы можем вынести эту функциональность в класс Utilities. Для этого метода нам понадобится передавать ссылку на объект класса Page (поскольку методы RegisterStartupScript() и IsStartupScriptRegistered() – это методы страницы), а также не будем забывать строку отобображения и имя ключа, на которое будет регистрироваться скрипт.


public static void CreateMessageAlert(Page aspxPage, string msg1, string key)
{ StringBuilder sb = new StringBuilder();
sb.Append("<script language=JavaScript>");
sb.Append("alert('");
sb.Append(msg1);
sb.Append("');");
sb.Append("</script>");

if (!aspxPage.IsStartupScriptRegistered(key))
{
aspxPage.RegisterStartupScript(key, sb.ToString());
}
}

Выводы
    В этой статье мы рассмотрели каким образом можно добавить сообщения на стороне клиента в ваше приложение ASP.NET. Добавление подтверждающих сообщений также просто, как и добавление атрибута onclick в коллекцию Attributes элемента управления [Button Web]. Отображение информирующего сообщения при загрузке страницы требует вызова метода Page.RegisterStartupScript() с пересылкой всего скрипта на языке JavaScript, который и должен быть вызван при загрузке страницы.

Happy Programming!

{К содержанию}

Время кода

Сохранение картинки из буфера обмена в файл с использованием C#

ЯЗЫК: C#
АВТОР: Fraas Faisal,
Сохранение картинки из буфера обмена в файл с использованием C#
ПЕРЕВОД: Чужа В.Ф ака hDrummer

Как вы знаете, буфер обмена – это набор функций и сообщений, позволяющий приложениям обмениваться данными. Поскольку все приложения имеют доступ к буферу обмена, данные могут легко передаваться как между приложениями, так и внутри одного приложения.

В этой статье рассказывается о том, как обращаться с данными буфера обмена и сохранять их в файл с использованием C#.
Вы этой статье мы используем класс (‘System.Windows.Forms.Clipboard’), этот класс содержит методы, с помощью которых можно сохранять и извлекать данные из буфера обмена. Все методы этого класса являются статическими, т.е. мы будем их использовать без создания объекта данного класса.
Прежде всего опишем основные моменты программы:
  • Метод GetDataObject() извлекает данные из буфера обмена, поэтому с его помощью мы можем как получать данные из буфера обмена, так и проверить его на наличие каких-либо данных.
  • Поскольку типы данных в буфере обмена могут быть различны, этот метод возвращает данные как IDataObject, поэтому мы создадим объект из интерфейса IDataObject и проинициализируем его значением, полученным из метода GetDataObject().
    IDataObject data = Clipboard.GetDataObject();
  • После этого мы будем использовать объект data для обработки информации, полученной с помощью метода GetDataObject()из буфера обмена.
  • Теперь мы можем проверить тип данных
    if (data.GetDataPresent(DataFormats.Bitmap))
    {
    }
  • Или сконвертировать его в подходящий формат, например изображение
    Image image = (Image)data.GetData(DataFormats.Bitmap,true);

Код статьи


if (Clipboard.GetDataObject()!=null) {
IDataObject data = Clipboard.GetDataObject(); < BR > if (data.GetDataPresent(DataFormats.Bitmap))
{
Image image = (Image)data.GetData(DataFormats.Bitmap, true);
image.Save(@"c:\image.bmp" ,System.Drawing.Imaging.ImageFormat.Bmp);
image.Save(@"c:\image.jpg" ,System.Drawing.Imaging.ImageFormat.Jpeg);
image.Save(@"c:\image.gif" ,System.Drawing.Imaging.ImageFormat.Gif);
MessageBox.Show(@"Данные успешно сохранены на диск C:\","Ура" );
}
else {MessageBox.Show("Данные в буфере не являются изображением","Хм..." );}
}
else {MessageBox.Show("Буфер обмена пуст!","Хм...");
}


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

MDI
C# & video
WinForms: MenuItem.OwnerDraw
WinSock
Внедрение ресурсов в сборку.
WinForms: DataBinding, Position
Управление DataGrid клавиатурой?????
UrlEditor для подсвойства web контрола.
DataGrid как в Windows! Клиент ХОЧЕТ :-(((


На этом одиннадцатый выпуск .Net Собеседника закончен.
До следующего номера.



Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения, вопросы и замечания.


Рассылки Subscribe.Ru
.Net Собеседник - Новости мира Net, C#, ASP.Net


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное