我用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中显示记录
}
这到底是什么原因呢? 怎么解决?要急用啊 !谢谢了
后台相应代码如下:
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中显示记录
}
这到底是什么原因呢? 怎么解决?要急用啊 !谢谢了
可以再选用一个事件让它发生在dg_PageIndexChanged之后呀
if(e.CommandName != "Page")//你可以在Item_Command事件设个断点看分页执行时e.CommandName是等于什么,然后在这里做个判断就可以了
{
TableCell tc = e.Item.Cells[1];
dy.Text = tc.Text;//在TextBox中显示记录
}
而dg_PageIndexChanged生成一个事件
所以就会先激发Item_Command再激发dg_PageIndexChanged
而dg_PageIndexChanged生成一个事件
所以就会先激发Item_Command再激发dg_PageIndexChanged
---------------------------同意
而dg_PageIndexChanged生成一个事件
所以就会先激发Item_Command再激发dg_PageIndexChanged
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")
{
//这里再执行
}
说的没错。
肯定会先执行ItemCommand