1

当用户选择列表中的项目时,我将图像按钮写入新行中的表格单元格:

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);

单击新的图像按钮时,我似乎无法处理它。我在 Page_PreRender 事件中看到它,我还在每次回发时重新加载表。

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 中,然后在 click 事件中抓取它:

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

但是因为有新的行被添加和删除,这在编程上变得相当丑陋。我认为必须有一个优雅的解决方案来从服务器端代码动态创建和检索动态图像按钮。我已经做了很多挖掘,但这个让我难过。

提前致谢...

4

1 回答 1

2

如果您在页面生命周期的事件处理阶段(例如,在 item selected 事件中)创建动态控件,则该控件将在下一次回发时消失。

为了将动态控件注册到 ViewState,它们必须在事件生命周期的 Init 阶段创建。

此外,您说您正在遍历表单的控件......当您将图像按钮添加到表格的单元格时。您是否递归地降低控件层次结构以查找图像按钮?

于 2009-05-14T22:56:15.363 回答