我只写出关键代码:
private void Page_Load(object sender, System.EventArgs e)
{
//if (!IsPostBack)  
//{
sqlDataAdapter1.Fill(dataSet11);
DataGrid1.DataBind();
//}
}
private void DataGrid1_EditCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Label1.Text = "xxxxx";
}
将DataGrid绑定后,在DataGrid中添加一个编辑按钮后,然后编写事件处理程序。
问题如下:
如果每次在页面呈现时都进行绑定(注释掉的if),则点击编辑按钮后不会调用DataGrid1_EditCommand(因为Label1.Text = "xxxxx"没执行);但是加上if判断就可以了,请问这是为什么?
是不是先执行了Page_Load中的DataGrid1.DataBind()后会丢失事件信息,导致不执行DataGrid1_EditCommand

解决方案 »

  1.   

    你加上if即在第一次加载页面时绑定datagird,
    当你去掉if时,虽然客户端按了编辑按钮,
    但会重新执行一次绑定,所以就不会显示了
      

  2.   

    绑定动作会初始化控件,如果没有if (!IsPostBack),那每次返回页面,都会进行绑定,你的操作自然会没有任何作用!
    注明:IsPostBack 是指页面是否为回传页面,当页面为回传页面时,IsPostBack为真,!IsPostBack自然为假,那if (!IsPostBack),下的语句就不会执行.
    if (!IsPostBack),的意思就是,如果你是从别的页面进入此页面的话,就执行里面的代码,如果你只是在本页面操作的话,就不执行里面的代码.