Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> События страницы и запросы к БД 
:(
    Опции темы
cupper
Дата 11.8.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Недавно начал изучение ASP.NET, использую С#. В принципе процесс идет, все изучается по маленьку. Но. Пока не где не встречал материал по организации жизни страницы и о том что, где, когда и как правильно делать. 
К примеру рассмотрим вопрос работы с БД. 
В данный момент схема работы у меня строиться слудеющим образом:
В обработчике Page_PreRender который отрабатывает после каждого обновления страницы, клацания по кнопке и много когда еще я каждый раз делаю стандартный запрос к БД и обновляю всю инфу на странице.
Код

protected void Page_Prerender(object sender, EventArgs e)
    {
        clInterview clIView = new clInterview();
        gvInterview.DataSource = clIView.GetAllItemStatusOpen(); // получаем необходимую таблицу и связываем ее с GridView
        gvInterview.DataBind();
    }

В начале немного пояснений: 
Вопрос 1: почему именно в Page_Prerender а не в Page_Load ?
Ответ: потому что если делать в Page_Load возникают непонятные глюки (кнопки edit или delete в GridView срабатывают со второго раза и после перехода в режим редактирования либо получаю пустые поля либо ошибку об необработанном исключении).
Вопрос 2: почему не использую хорошее свойство IsPostBack
Ответ: по той же причине что и в первом вопрос, почти все аналогично.

Теперь немного о плюсах и минусах данной схемы:
Плюсы: не будучи силен в web и БД, мне кажется очевидным плюсом то что данные на странице постоянно обновляются, конечно не регулярно, но при непосредственной работе с элементами страницы пользователь будет видеть самые последние данные.
Минусы: 
1) при каждом клацание чего либо происходит запрос к БД, это также является и минусом если БД очень большая.
2) более весомая, на мой взгляд. Так как при малейшем обновлении страницы происходит полное обновление отображаемых на странице данных из БД, то получается именно через этот метод нужно проводить любые обновление в отображаемых данных. К примеру, есть Грид и две кнопки. Первая кнопка показать всех 'Петь', вторая показать всех 'Юль'. Таким образом при клацание на одну из кнопок ( к примеру на 'Юльки') в ее обработчике не будет производиться непосредственно обновление отображаемых в гриде данных, потому что это не имеет смысла. Даже если я сделаю запрос к бд и выведу его в грид, то после этого отработает метод Page_PreRender() в котором опять сделается стандартный запрос и выведутся другие данные. Таким образом в обработчике кнопки мне остается сделать только  изменение какой либо переменной (хранимое в Sessions на пример) а уже в Pare_PreRender() проверять все эти переменная и в зависимости от их значений делать определенного вида запрос.
Ну и любые другие действия с данными происходят по такой же схеме. При Edit'e данных, в обработчике и ях просто скидываю в БД, знаю что в методе Page_PreRender они считаются и выведутся в обновленном виде. И хорошо и плохо.

Хотелось бы послушать как это происходит у бывалых.
Ну и если повезет о багах которые происходят из за IsPostBack или Page_Load. 

PM MAIL   Вверх
A5uKa
Дата 12.8.2010, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



Ну работает как должно работать . . .
В основном использую ObjectDataSoucs-ы, которые ориентированны на методы из разных модулей.
На кнопку идёт подбор параметров и DataBind(); на элементе и после этого страница обновляется.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0379 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.