2012-03-04 4 views
1

У меня есть следующие два управления в моем кодеGridview сортировки не срабатывает в первый щелчок

GridView (для отображения данных) SqlDataSource (источник моего GridView)

Я хочу изменить GridView, но когда я изменяю sqlcommandstring в моем sqldatasource, в новом представлении сортировки таблицы datagrid не срабатывает при первом щелчке. См. Ниже для процесса изменения sqlcommandstring.

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      if (IsPostBack) 
      { // Restore saved sqlcommand in page refresh, please see below 
       SqlDataSource1.SelectCommand = ViewState["MySQL"].ToString(); 
      } 
     } 
     catch (Exception ex){}    
    } 

    protected void btn_SearchLibrary_Click(object sender, EventArgs e) 
    { 
     SqlDataSource1.SelectCommand = "SELECT * FROM Books WHERE id=1 OR id=2"; 
     ViewState["MySQL"] = "SELECT * FROM Books WHERE id=1 OR id=2"; 
     //Saves sqlcommand in viewstate, to restore it in page refresh. 
    } 

ответ

2

Я считаю, что DataBinding вашего GridView происходит перед обработчиком событий Click для вашей кнопки. Поэтому ваша сетка уже обновлена ​​из источника данных до того, как сам источник данных будет изменен. После обновления SelectCommand в обработчике событий Click вы должны явно вызвать DataBind для сетки.
Кроме того, как и в стороне, похоже, что ваш try-catch в вашей Page_Load предназначен только для подавления исключения NullReferenceException, так как Page_Load также срабатывает перед обработчиком события Click, поэтому ViewState["MySQL"] всегда будет иметь значение null.

+0

Я попытался понять, но не мог понять вас, я добавил привязку данных в обработчик событий щелчка, но это не сработало, – HOY

+0

Мой ответ может быть вне базы, поэтому я думаю, что мне нужно попросить разъяснения: Можете ли вы пройти через типичное использование для меня? Является ли это следующим: Страница загружается в первый раз с пустой сеткой; пользователь щелкает кнопкой SearchLibrary и сетью; пользователь щелкает заголовок столбца для сортировки сетки, но этот первый клик не обрабатывается; все последующие клики обрабатываются и сортируются правильно. Это точно? –

+0

Вот как процесс: Страница загружается в первый раз, когда сетка имеет 3 элемента внутри, (потому что мой SqlDataSource1 -> Sqlcommandstring = SELECT * из книг), также сортировка работает okey, после того, как поиск щелкнул выше btn_SearchLibrary_Click пожаров и сетки теперь с двумя элементами, теперь сортировка работает не очень хорошо. (PS: Я использовал состояние View, чтобы сохранить строку команд одинаково все время, потому что, если я ее не использую, gridview возвращается к исходному состоянию с тремя элементами каждый раз, когда что-то щелкает). – HOY

Смежные вопросы