28 февраля 2011 г.

IsPostBack на страницах ASP.NET

У страниц ASP.NET есть полезное свойство IsPostBack, которое имеет тип bool. Оно показывает, является ли данная загрузка страницы "обратной отправкой" (PostBack)? Обратная отправка возникает, чаще всего, при нажатии какой-либо кнопки на странице.

Свойство IsPostBack удобно использовать при первичной установке каких-либо параметров страницы программным образом.

Допустим, у нас на странице есть элемент управления GridView с ID = gvEmployees, который содержит список работников. У этого контрола есть такое свойство как PageSize (размер страницы), т.е. количество строк на одной странице. Допустим, это свойство может изменять сам пользователь при помощи другого элемента управления, например, выпадающего списка DropDownList с ID = ddlPageSize. И пусть у этого выпадающего списка свойство AutoPostBack установлено в true, т.е. если пользователь выберет другой элемент в этом списке, это действие тут же вызовет обратную отправку страницы.

Проверку на обратную отправку удобно сделать в событии уровня страницы Page_Load. Дело в том, что это событие будет возникать не только при первой загрузке страницы, но и при любой обратной отправке. Поэтому если это не обратная отправка, то установим размер страницы в списке работников по умолчанию.

protected void Page_Load(object sender, EventArgs e)
{
        // если НЕ обратная отправка
if (!IsPostBack)
{
gvEmployees.PageSize = 20;
}
}

Если же это всё-таки обратная отправка, то в событии Page_Load относительно PageSize делать ничего не надо, т.к. данное свойство будет изменено обработчиком выпадающего списка.

protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
  gvEmployees.PageSize = (int)ddlPageSize.SelectedValue;
}

P.S. Хочу заметить, что у выпадающего списка свойство SelectedValue имеет тип string и должно быть преобразовано в int. Но лучше не делать преобразование так, как указано выше, а использовать для этого метод Int32.TryParse.


Комментариев нет:

Отправить комментарий