我用DataGrid控件(ID为dg)做选中和分页,用dg_PageIndexChanged事件和dg_ItemCommand事件,编辑完成以后,当要执行dg_PageIndexChanged事件时,总是先执行dg_ItemCommand事件.而当先执行dg_ItemCommand事件就没有上面的错误;也就是当点击"下一页"按钮时(触发dg_PageIndexChanged事件)却先执行dg_ItemCommand事件再执行dg_PageIndexChanged事件.怎么解决啊!
后台相应代码如下:
private void dg_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dg.CurrentPageIndex = e.NewPageIndex;
dgBind();
}//这个事件总是先执行。
private void dg_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
TableCell tc = e.Item.Cells[1];
dy.Text = tc.Text;//在TextBox中显示记录
}
这到底是什么原因呢? 怎么解决?要急用啊 !谢谢了

解决方案 »

  1.   

    有可能dg_ItemCommand事件本来就发生在dg_PageIndexChanged之前
    可以再选用一个事件让它发生在dg_PageIndexChanged之后呀
      

  2.   

    好象是这样,你看这样行吗?
    if(e.CommandName != "Page")//你可以在Item_Command事件设个断点看分页执行时e.CommandName是等于什么,然后在这里做个判断就可以了

        TableCell tc = e.Item.Cells[1];
        dy.Text = tc.Text;//在TextBox中显示记录
    }
      

  3.   

    Item_Command在事件生成时激发
    而dg_PageIndexChanged生成一个事件
    所以就会先激发Item_Command再激发dg_PageIndexChanged
      

  4.   

    可以用gg_ItemDataBound事件来代替Item_Command事件吧
      

  5.   

    Item_Command在事件生成时激发
    而dg_PageIndexChanged生成一个事件
    所以就会先激发Item_Command再激发dg_PageIndexChanged
    ---------------------------同意
      

  6.   

    Item_Command在事件生成时激发
    而dg_PageIndexChanged生成一个事件
    所以就会先激发Item_Command再激发dg_PageIndexChanged
      

  7.   

    可以这样
    private void dg_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
                  if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==System.Web.UI.WebControls.ListItemType.AlternatingItem)
    {
    TableCell tc = e.Item.Cells[1];
    dy.Text = tc.Text;//在TextBox中显示记录
                                }
    }不过还是建议你最好在ItemCommand里面分别好情况再执行
    例如if (e.CommandName == "Delete")
           {
             //这里再执行
            }
      

  8.   

    silentwins(原谅我当天不懂得珍惜只知任性...)
     说的没错。
    肯定会先执行ItemCommand