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

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


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

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

Содержание
  1. От автора
  2. Обзор новостей
  3. Статья выпуска - Компоненты контроля ввода ASP .Net  
  4. Время кода - Обработка событий элементов управления вставленных в ячейки DataGrid
  5. Форумы .Net на www.sql.ru

От автора

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

          3 июня в 19.00 в учебном центре Квазар-Микро, в который раз будет проводиться встреча разработчиков на платформе .NET.

Доклады -
  1. Предварительный обзор Visual Studio 2005 Whidbey
  2. Использование FxCop, как средства поиска заведомо "плохого" кода.
  3. Интеграция приложений и автоматизация бизнес-процессов на базе BizTalk Server 2004
Презентаторы
Виталий Чужа – Евангелист платформы .NET
Олег Михайлик – Разработчик на платформе .NET
Денис Пасечник – Региональный директор по развитию платформы .NET на Украине
специальный гость встречи
Менеджер по развитию платформы .Net - Эмануэле Огниссанти
Встреча обеспечивается поддержкой местного офиса Microsoft в Украине в лице Александра Орехова.
Контактное лицо – координатор встречи Денис Пасечник Denis.Pasechnik @ kvazar-micro.com

Адрес:
Учебный Центр Квазар-Микро
ул. Северо-Сырецкая, 3
Киев, 04136, Украина
т. (044)2399960 ф. (044)2399961

Добираться можно так: Маршрутное такси №5 или трол. №5 (конечная остановка - ул. Терещенковская.
И ещё - в последнее время заметил на форумах интерес к компонентам-валидаторам и решил выложить в выпуске свою статью двухгодичной давности. Она достаточно объёмная и содержит иллюстрации, которые буджут выложены позже на сайте рассылки, но и без них вы получите представление как работать с ККВ.

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

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

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

  1. CenterSpace Software объявила о партнёрстве с Syncfusion
    CenterSpace Software объявила о партнёрстве Syncfusion, Inc., ведущим поставщиком компонент и инструментов для платформы .NET. Теперь покупатели могут приобрести набор компонент CenterSpace NMath Suite для .NET совестно с набором компонент для форм Windows Syncfusion Essential Suite с 25%-ной скидкой.
  2. Вышел ShellView Pack.Net 5.2
    ShellView Pack.Net 5.2 позволяет добавить к вашему приложению функциональность Windows Explorer.
  3. Доступен новый веб-редактор на платформе .NET
    ActivEdit выпустила версию 4.0 для программных языков платформы .NET. ActivEdit – редактор стандарта WYSIWYG на стороне сервера, использующий формы платформы .NET для форматирования текста. Функциональность поддерживается в большинстве современных браузеров.
  4. Chive Software выпустила Apoc PDF Toolkit V3.0
    Apoc PDF Toolkit – компонет, позволяющий разработчикам манипулировать существующими PDF-документами и создавать новые.
  5. yFiles.net – вышла библиотека Automatic Graph Layout Library для .NET
    yWorks GmbH объявила о выходе известной библиотеки 'yFiles' для .NET Framework. Используйте yFiles.net для автоматического создания раскладок ваших диаграмм и графиков.
  6. XPSP2 RC1 Platform SDK
    Вышел XPSP2 RC1 Platform SDK.
  7. Web Services Enhancements (WSE) 2.0 for Microsoft .NET
    Вышел Web Services Enhancements (WSE) 2.0 for Microsoft .NET.
  8. Доступна для скачивания обновлённая спецификация C# V2.0
    Самое заметное добавление - nullable-типы.
BUGs, FIXes and HOW TO's -
  1. You cannot debug a SQL Server stored procedure more than one time while debugging managed .NET Framework code in Visual Studio .NET
  2. Changes to datagrid text are lost in Visual C# .NET 2003 project
  3. FIX: An access violation occurs if the DEVPATH environment variable refers to a network share in a Visual Studio .NET 2003 project
  4. You receive a "Setup Failed" error message when you try to install Visual Studio .NET

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

Статья выпуска

Компоненты контроля ввода ASP .Net

ЯЗЫК: ASP.Net
Автор статьи: Чужа В.Ф. ака hDrummer http://dotnetgrains.sql.ru/

Omnia vita in aperta leviora sunt.
Обнаруживший себя изъян наименее опасен.
Доверяй, но проверяй.
Народная поговорка

Идея контролировать ввод пользователя программного обеспечения (ПО), в зависимости от типа данных или по шаблону, наверняка возникла у разработчиков ПО вместе с первыми ошибками ввода и была реализована во многих программных продуктах. Например, в Turbo Vision фирмы Borland класс TinputLine имеет метод Valid, перекрыв который можно вести контроль правильности ввода данных. При работе с базами данных есть возможность задать так называемые constraints – ограничения на ввод на уровне, например, поля (столбца) или таблицы. Так, в СУБД MS SQL Server 2000 имеются такие типы ограничений на ввод на уровне поля (домена в терминах SQL Server), как DEFAULT – значение по умолчанию, CHECK – проверка значения на допустимость занесения в поле и REFERENTIAL – значение должно соответствовать одному из значений в другой таблице. Эти примеры являются разными способами реализации контроля ввода пользователя, служащие одной цели – повышению надёжности работы программного обеспечения. Наверняка именно поэтому не обошла вниманием эту идею и компания Microsoft в новой версии ASP – ASP.Net, представив нам 6 компонент для контроля ввода пользователя (ККВ). Разберём их подробнее.

Обзор компонент контроля ввода

Прежде всего, нужно отметить, что набор этих компонент доступен в пространстве имён System.Web.UI.WebControls, относится к ASP Web Controls и включает следующие ККВ:

∙ RequiredFieldValidator – проверяет, есть ли в поле ввода хоть какое-нибудь значение;
∙ RegularExpressionValidator – проверяет значение в поле ввода на соответствие шаблону;
∙ CompareValidator – проверяет является ли значение в поле ввода приемлемым относительно данному значению или содержимому другого элемента управления;
∙ RangeValidator – проверяет входит ли значение в поле ввода в заданный диапазон;
∙ CustomValidator – позволяет разработать пользовательские компоненты контроля ввода;
∙ ValidationSummary – выводит отчёт обо всех возникших ошибках.

Все ККВ, кроме RequiredFieldValidator, допускают пустое значение поля ввода. А поскольку к полю ввода можно присоединить более одного ККВ, то необходим как минимум один компонент RequiredFieldValidator для избежания ввода пустого значения. Например, можно использовать RequiredFieldValidator и RegularExpressionValidator для того, чтобы убедиться, что поле ввода не является пустым и соответствует данному шаблону.

Компоненты контроля ввода выполнены в виде классов, т.е. имеют поля, свойства и методы. Некоторые свойства и методы являются общими для всех ККВ (кроме ValidationSummary):

ErrorMessage – при возникновении ошибки система отображает значение этого свойства в месте расположения самого ККВ;
Display – ККВ невидим до тех пор, пока не возникнет ошибка ввода. В случае ошибки ввода система генерирует сообщение о ней, отображая её на экране одним из трёх способов:
 o display =”none” – сообщение ErrorMessage не отображается в области размещения ККВ, вместо этого сообщение будет отображено в общем отчёте об ошибках (ValidationSummary);
 o display =”dynamic” – в случае ошибки ввода ErrorMessage отображается на новой странице;
 o display =”static” – изначально программист выделяет на странице достаточное место для отображения ErrorMessage, путём выделения для ККВ определённого пространства, где и отображается значение свойства ErrorMessage при возникновении ошибки ввода.
Validate – метод, программно осуществляющий проверку значения в поле ввода и обновляющий свойство IsValid;

Компонент RequiredFieldValidator

Этот компонент используется для того, чтобы установить необходимость ввода в ассоциированное поле ввода какого-нибудь значения. Чаще всего изначальное значение поля ввода является пустым, и данный ККВ контролирует ввод непустых значений. Однако, задав значение свойства InitialValue данного ККВ, можно изменить значение по умолчанию. В любом случае, ввод будет считаться неудачным, если после потери фокуса (или отправки формы на сервер) значение в поле ввода не будет отличаться от InitialValue. В следующем примере пользователь должен будет ввести свою фамилию, имя и отчество в поле «Ф.И.О.». Если это значение не будет введено, то, после нажатия кнопки «Подтвердить», система отобразит сообщение об ошибке. Заметьте, что мы не пишем никакого дополнительного кода для осуществления этой проверки. После нажатия на кнопку «Подтвердить», форма отсылается на сервер, который и производит автоматический контроль правильности ввода(рис.1 (файл valid1.jpg)).

<!—RequiredFieldValidator-->
<html>
<head></head>
<title>Пример использования ККВ RequiredFieldValidator</title>
<body>
<form id="v1" runat="server"><br>
<h3>Введите Ваше Ф.И.О.:</h3><br>
<asp:TextBox id="tbFIO" rows="1" width="75" runat="server"/>
<asp:RequiredFieldValidator id="rfvFIO" ControlToValidate="tbFIO"
ErrorMessage="Необходимо ввести Ваши фамилию, имя и отчество"
display="static" runat="server"/><br>
<asp:Button id="btnOk" text="Подтвердить" runat="server"/>
</form>
</body>
</html>

Пример 1. Использование ККВ RequiredFieldValidator

Компонент RegularExpressionValidator

Компонент RegularExpressionValidator обычно используется для проверки введенного значения на соответствие шаблону ввода. Т.е., пользуясь этим компонентом, можно контролировать правильность ввода электронных почтовых адресов, индексов, телефонов и т.п. Для примера добавим к предыдущему коду поле для ввода года рождения и определим, что значение этого поля может иметь только 4 цифры. Для этого введём дополнительное поле ввода tbYear и добавим к нему ККВ RegularExpressionValidator с шаблоном “\d{4}”. Шаблон вынудит систему сгенерировать ошибку, если пользователь введёт число, содержащее менее или более чем 4 цифры (рис.2 (файл valid2.jpg)).

<!—RegularExpressionValidator-->
<html>
<head></head>
<title>Пример использования ККВ RegularExpressionValidator</title>
<body>
<form id="v1" runat="server"><br>
<h3>Введите Ваше Ф.И.О.:</h3><br>
<asp:TextBox id="tbFIO" rows="1" width="75" runat="server"/>
<asp:RequiredFieldValidator id="rfvFIO" ControlToValidate="tbFIO"
ErrorMessage="Необходимо ввести Ваши фамилию, имя и отчество"
display="static" runat="server"/><br>
<h3>Год Вашего рождения:</h3><br>
<asp:TextBox id="tbYear" rows="1" width="75" runat="server"/><br>
<asp:RequiredFieldValidator id="rfvYear" ControlToValidate="tbYear"
ErrorMessage="Необходимо ввести год Вашего рождения"
display="static" runat="server"/><br>
<asp:RegularExpressionValidator id="revYear" ControlToValidate="tbYear"
ErrorMessage="Необходимо ввести 4 цифры года, например 1972"
validationExpression="\d{4}"
display="static" runat="server"/><br>
<asp:Button id="btnOk" text="Подтвердить" runat="server"/>
</form>
</body>
</html>

Пример 2. Использование ККВ RegularExpressionValidator

Окончание - в следующем выпуске.

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

Время кода

Обработка событий элементов управления вставленных в ячейки DataGrid

ЯЗЫК: C#
АВТОР: mkruppa,
http://www.codeproject.com/
ПЕРЕВОД: Чужа В.Ф ака hDrummer

Вступление

Одной из самых больших загадок для меня при работе с DataGrid была обработка событий элементов управления, вставленных в ячейку DataGrid без затрагивания самого компонента DataGrid. Например, обработка события OnCheckedChanged элемента управления CheckBox с установленным свойством AutoPostBack в true.

За кулисами

Если вы, также как и я, пришли к тому, что использование элемента управления DataGrid является одним из самых удобных способов работы с данными в веб-приложении, вы наверняка сталкивались с ограничениями этого элемента управления. Если вы хотите быстро вникнуть в суть проблемы, то совсем не обязательно самостоятельно писать элемент управления ‘столбец’, достаточно использовать TemplateColumn. В рамках этого элемента управления - TemplateColumn – вы, конечно, захотите использовать какие-то другие элементы управления и, естественно, пользоваться всеми их возможностями, включая события. К сожалению, всё это звучит проще на словах, чем работает на деле. Экспериментируя с элементами управления внутри DataGrid, я сталлкивался с множеством странных ошибок компилятора, до тех пор, пока не наткнулся на интересное и полезное событие DataGrid,а именно ItemCreated.

Как сделать самому?

Всё что мы хотим сделать – прицепить обработчик события OnCheckedChanged к элементу управления CheckBox. TemplateColumn с CheckBox выглядит примерно так:

<asp:TemplateColumn HeaderText="Checkbox">
<ItemTemplate>
<asp:CheckBox ID="cbExample" AutoPostBack="true" runat="server">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>

Функция обработки события выглядит так:

protected void OnChangeHandler(object sender, System.EventArgs e)
{ // Обработка события
}

Итак, теперь мы должны прицепить обработчик к элементу управления. Если мы сделаем это непосредственно внутри него, например так - OnCheckChanged="OnChangeHandler" и будем использовать ‘закулисный код’ для работы с этим событием, то скорее всего мы получим ошибку компилятора. Поэтому используем событие ItemCreated элемента управления DataGrid (см. код ниже), который часто помогает мне в разных ситуациях, например добавления ячеек подвала или смены символа сортировки.

private void grid_ItemCreated( object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
ListItemType elemType = e.Item.ItemType;
if ((elemType == ListItemType.Item)||
(elemType == ListItemType.AlternatingItem))
{
// *** Обработчик событий для Checkbox ***
CheckBox cBox = (CheckBox) e.Item.FindControl("cbExample");
cBox.CheckedChanged += new EventHandler(OnChangeHandler);
}
}

И напоследок

Обработка событий элемента управления DataGrid иногда не так проста и очевидна, но этот элемент управления остаётся моим самым любимым элементом управления.


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

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

Создание объекта ADP parameter
Отладка клиентского скрипта - Как????
Compact Framework Graphics
pwdLastSet property
Редактор форм



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



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


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


В избранное