10 ноября 2010 г.

Валидация с использованием JQuery и Web-сервисов ASP.NET

Валидация данных одна из самых больших проблем, каждого приложения. Записать данные нужно корректно, от этого зависит как будет работать ваше приложение. И часто с проверкой на корректность данных и происходит много проблем, так как часто нам нужно не только проверить, чтобы данные были, но и так же проверить, чтобы они имели необходимый нам формат.
Для проверки введенных пользователем данных в ASP.NET приложениях нам помогают контролы находящиеся в группе Validation в панели Toolbox в Visual Studio, но часто бывает, что мы их не используем или их возможностей не хватает для необходимой нам проверки, тогда приходится или искать контролы сторонних производителей, которые чаще всего стоят денег или изобретать что-то самому. Чем мы сегодня и займемся.

У нас есть список городов, который хранится в базе данных в таблице Towns.
Напишем web-сервис, который будет проверять, есть ли город в таблице.

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1), ScriptService, WebService(Namespace = "http://microsoft.com/webservices/")]
public class ValidationService : WebService
{
[WebMethod]
public bool VerifyTown(string inputTown)
{
using(dbDataContext db = new dbDataContext)
{
Town town = db.Towns.Where(t=>t.TownName == inputTown).FirstOrDefault();
return town != null ? true : false;
}
}
}

Как видно, это обыкновенный web-сервис. Едиственное, что он помечен атрибутом ScriptService, который говорит, что к данному веб сервису можно обращаться используя JavaScript или другие скриптовые языки.

Зарегистрируем наш web-сервис на странице и разместим необходимые нам элементы управления.
В txtTown вводится название города. lblErrorTown показывает сообщение об ошибке, если город введен неверно.

< script language="javascript" src="js/jquery.js" type="text/javascript" />










А вот и сам JQuery скрипт проверки.




Вот собственно и все. Единственный недостаток данного примера, что он не учитывает свойство ValidationGroup, но при желании его можно усовершенствовать и и на работу со своим ValidationGroup. Так же не будет лишним добавить спроверки при сабмите формы.

4 ноября 2010 г.

Полосы прокрутки RadScheduler в IE8

По воле случая пришлось на сайте использовать контрол RadScheduler от Telerik. Полностью настроив контрол обнаружил оин нехороший баг. При использовании браузера Internet Explorer в области календаря появляются полосы прокрутки, тогда как в других браузерах все было хорошо. Установка свойства OverflowBehavior в "Expand", так же результатов не дало.
Оказалось, что сама таблица календаря содержиться вот в такм блоке DIV

< div class="rsContentScrollArea" style="overflow:auto;position:relative;">

Ошибка кроется в overflow:auto. Данный CSS-стиль и создавал наши полосы прокрутки.
Исправить это можно обыкновенным JQuery, как показано ниже.



Всю основную работу делает функция updateMonthView.
Она вызывается сразу при загрузке страницы и после каждого AJAX-события.