Как сохранить запрос на подключение к базе данных в этом сценарии - PullRequest
1 голос
/ 04 августа 2010

Я новичок в asp.net и немного знаю о его работе, и по мере продвижения вперед я получаю все новые и новые сомнения.

Здесь в этот момент я работал с двумя RadioLists, которые связываются при загрузке страницы.

Теперь, когда пользователь меняет индекс радиокнопки в списке 1. Второй нужно получитьобновляется соответственно в зависимости от того, какое значение в данный момент установлено для выбранной радиокнопки.Поскольку страница будет опубликована, следовательно, мне либо нужно запустить запрос снова, чтобы получить новые данные из базы данных для текущего выбранного индекса, либо можно сохранить 2-3 таблицы в session в виде Dataset.

Что мне делать в таком сценарии.Должен ли я запустить SQL-запрос снова или получить DataSet из сеанса .

Какой наиболее оптимальный подход для этого.И ПОЧЕМУ?

1 Ответ

1 голос
/ 04 августа 2010

Данные для списка переключателей 1 (rbl1) не следует снова извлекать из базы данных.Он уже должен быть заполнен из ViewState.Это невидимый объект на вашей странице, который отслеживает содержимое ваших элементов управления между загрузкой их в браузер и возвратом формы обратно на сервер.Если вы перепривязываете rbl1 к данным обратной передачи, вы потеряете текущий выбор.

Не должно быть ничего плохого в получении данных для отправленного списка радиобуттон из базы данных, если результаты будут меняться в зависимости отвыбор первого.

Однако, если размер данных невелик, вы можете кэшировать результаты в кэш приложения, если все пользователи видят один и тот же набор данных, или кэш сеанса, если он зависит от пользователя.

Затем вы можете использовать Linq для запроса данных на основе выбора из первого списка радиобуттон.

<asp:RadioButtonList ID="rbl1" runat="server" AutoPostBack = "true"
 OnSelectedIndexChanged="rbl1_SelectedIndexChanged">

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
       //bind your rbl1 here
    }
}

protected void rbl1_SelectedIndexChanged(object sender, EventArgs e)  
{  
     //load your second radio button list depending on the selection of the first
}  
...