Сортировка Gridview не запускается при первом нажатии - PullRequest
1 голос
/ 05 марта 2012

В моем коде есть следующие два элемента управления

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

Я хочу изменить представление сетки, но когда я изменяю строку sqlcommandstring в моем sqldatasource, в новом представлении сортировки таблицы данных не запускается первый щелчок. Пожалуйста, смотрите ниже процесс изменения 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.
    }

1 Ответ

2 голосов
/ 05 марта 2012

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

...