我写的ImageButton在新行一个表格单元格,当用户在列表中选择一个项目:

ImageButton imgbtnRemove = new ImageButton();
imgbtnRemove.ID = "uxStandardLetterDeleteImage_" + items.letterName;
imgbtnRemove.CommandName = "uxStandardLetterDeleteImage_" + items.letterName;
imgbtnRemove.ImageUrl = items.remove;
imgStatus.AlternateText = "Remove";
tRow.Cells[3].Controls.Add(imgbtnRemove);

点击新的ImageButton,我似乎无法得到它的句柄。我看到它在Page_PreRender事件,其中I也重新加载在每次回发的表。

string returnData = Request.Form.ToString();

而是通过形式迭代控制图像:

if (c is System.Web.UI.WebControls.Button ||
c is System.Web.UI.WebControls.ImageButton)

没有找到它。我能找到它,如果我手动放入:

imgbtnRemove.Click += new System.Web.UI.ImageClickEventHandler(this.ButtonClick);

在Page_Load,然后抓住它在点击事件:

switch (((System.Web.UI.WebControls.ImageButton)sender).CommandName)
...

但是,因为有被添加和删除的新行,这得到比较难看编程。我想必须有一个完美的解决方案,以动态的ImageButton创建和检索从服务器端代码的飞行。我已经做了挖掘了很多,但是这个人是我绊倒。

预先感谢...

有帮助吗?

解决方案

如果你在页生命周期的事件处理阶段创建动态控件(例如,在该项目的选择的事件),那么控制将被在下一个回发了。

为了进行动态控制,以与视图状态被登记,它们在事件的生命周期的Init相位被创建。

另外,你说你通过遍历窗体的控件...当你添加的ImageButton的表中的单元格。你递归下降的控制层次结构来寻找ImageButton的?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top