|M| 在我绑定的DataGrid添加ItemDataBound和ItemCommand为什么ItemDataBound可以执行而ItemCommand不执行

zyciis105 2007-02-01 07:32:30
代码:
CS:
protected void dgMovie_ItemDataBound(object sender, DataGridItemEventArgs e)
{
...
DataGrid dg = new DataGrid();
dg.ItemDataBound+=new DataGridItemEventHandler(dg_ItemDataBound);
dg.ItemCommand+=new DataGridCommandEventHandler(dg_ItemCommand);
...
}
public void dg_ItemDataBound(object sender, DataGridItemEventArgs e)
{
string s = "";//绑定添加DataGrid绑定事件  这里OK
}
public void dg_ItemCommand(object sender, DataGridCommandEventArgs e)
{
//绑定添加DataGrid按钮事件  这里不执行没有反应
if (e.CommandName.Equals("btn_Delete")) 
{
BindList();
}
}
ASPS:
<asp:LinkButton ID="btn_Delete" runat="server" CommandName="btn_Delete" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.MovieOrderID") %>'>删除</asp:LinkButton>
<asp:Button ID="LinkButton1" runat="server" CommandName="btn_Delete" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.MovieOrderID") %>' />
我用两种按钮都没有成功
为什么
ItemDataBound可以执行而ItemCommand不执行
...全文
282 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
潜水员2099 2007-02-02
  • 打赏
  • 举报
回复
但要是这样的话如何给他加呢
因为不知道主DataGrid会绑定多少钱,是什么id
====
不明白说些什么?
zyciis107 2007-02-02
  • 打赏
  • 举报
回复
UP
zyciis106 2007-02-02
  • 打赏
  • 举报
回复
哦。。很有道理
重新返回一次的时候没有执行DataBound()
也就没有执行dg.ItemDataBound+=new DataGridItemEventHandler(dg_ItemDataBound);
dg.ItemCommand+=new DataGridCommandEventHandler(dg_ItemCommand);
所以就不执行了


但要是这样的话如何给他加呢
因为不知道主DataGrid会绑定多少钱,是什么id
也没有办法在page.load给他们加啊
那就得在
page_load
{
bindlist()
if(!ispostback)
{
}
}
这样了吗,也就是load给多绑一次,但这样总是感觉不是很好
cpp2017 2007-02-02
  • 打赏
  • 举报
回复
因为 ItemDataBound是在绑定是就执行的事件,所以会执行 而ItemCommand是必须postback再会执行。而postback后。 主datagrid如果没有重新绑定的话。主datagrid的itemdatabound不会执行, 也就是说 dg.ItemDataBound+=new DataGridItemEventHandler(dg_ItemDataBound); dg.ItemCommand+=new DataGridCommandEventHandler(dg_ItemCommand); 这两个事件委托不会再执行,所以造成事件丢失。
zyciis106 2007-02-02
  • 打赏
  • 举报
回复
zyciis106 2007-02-02
  • 打赏
  • 举报
回复
UP
weiyong922 2007-02-02
  • 打赏
  • 举报
回复
:)
yqwaxyq 2007-02-02
  • 打赏
  • 举报
回复
ItemCommand要点击按纽才能执行事件
lovehongyun 2007-02-02
  • 打赏
  • 举报
回复
帮你顶..
zyciis105 2007-02-02
  • 打赏
  • 举报
回复
up
zyciis107 2007-02-02
  • 打赏
  • 举报
回复
好等会一起结
cpp2017 2007-02-02
  • 打赏
  • 举报
回复
是的
zyciis107 2007-02-02
  • 打赏
  • 举报
回复

foreach(DataGridItem er in this.DataGrid1.Items)
{
//在这里找找这个控件
}
也就是在load的时候查找这个控件然后添加事件?
cpp2017 2007-02-02
  • 打赏
  • 举报
回复
if (!this.IsPostBack) { this._BindData(); } foreach(DataGridItem er in this.DataGrid1.Items) { //在这里找找这个控件 }
zyciis105 2007-02-01
  • 打赏
  • 举报
回复
我这里只是说了一个按钮名
我的按钮并不是说一定是删除的啊
比如也可以是btn_Add btn_update btn_databind ..
像这些事件都是可以在ItemCommand里面执行的

先不用管我是用来做什么的
重要的是他这里不执行我的代码
ice2927276 2007-02-01
  • 打赏
  • 举报
回复
删除要用DeleteCommand事件,ItemCommand是用作选择或其它的用,给你个代码参考:
protected void dlShowEmp_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "select")
{
this.dlShowEmp.SelectedIndex = e.Item.ItemIndex;
this.bindEmp();
}
}
protected void dlShowEmp_DeleteCommand(object source, DataListCommandEventArgs e)
{
string empID = this.dlShowEmp.DataKeys[e.Item.ItemIndex].ToString();
DbOperate DO = new DbOperate();
DO.deleteEmp(empID);
this.bindEmp();
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧