网格视图排序没有';不要第一次点击就开火
本文关键字:第一次 开火 排序 视图 网格 | 更新日期: 2023-09-27 18:26:33
我的代码中有以下两个控件
gridview(用于数据显示)sqldatasource(我的网格视图的源)
我想更改网格视图,但当我更改sqldatasource中的sqlcommandstring时,在数据网格表的新视图中,第一次单击时不会触发排序。请参阅下面的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.
}
我相信GridView的DataBinding发生在按钮的Click事件处理程序之前。因此,在更改数据源本身之前,您的网格已经从数据源进行了更新。更新Click事件处理程序中的SelectCommand后,必须显式调用网格的DataBind。
此外,顺便说一句,您在Page_Load中的try-catch似乎只是为了抑制NullReferenceException,因为Page_Load也在Click事件处理程序之前触发,所以ViewState["MySQL"]
一开始总是为null。