1

我的 ASP.NET 应用程序中有一个 UpdatePanel 控件(实际上有几个,但这不是问题)。

<asp:UpdatePanel ID="UpdatePanelDetail" runat="server" UpdateMode="Conditional">
<ContentTemplate>
...More code here

在面板内部,存在一个asp:Table对象:

<asp:Table ID="tblGIFs" runat="server"></asp:table>

该表是通过代码隐藏中的一些代码以编程方式生成的:

TableRow htr = new TableRow();
TableCell htc = new TableCell();
...<snip>
tblGIFs.Rows.Add(htr)

这一切都很好,除了在其中一个单元格中我试图添加一个按钮(带有图像):

htc3.Text = "<input ID=\""+ii.Value+"\" OnClick = \"btnGIFSearch(this)\" type=\"image\" value=\"/Image/Fiu.png\" />";

单击此图像时,可以onclick正常触发,但会刷新整个图像UpdatePanel(因此会asp:Table消失)。

如果我使用 a type="button",它完全可以正常工作,并且刷新/丢失表格中的内容没有问题。

我已经在我从代码隐藏中触摸表格的每个位置都运行了带有断点的页面,但无济于事,我真的看不到任何可能导致UpdatePanel以编程方式清除的内容。

任何人都看到这些标签/控件的类似行为以及解决方案的任何想法?一种解决方法显然是使用type=button按钮并对其进行样式设置,但如果我能正确行事,我宁愿不这样做type=image

4

2 回答 2

9

输入类型“图像”就像一个提交按钮。它正在提交表单,因为这就是他们所做的。如果您的代码隐藏在您不期望的回发的情况下没有重建表,则表将不会重建,因此会消失(请记住,每当您动态构建控件时,您必须在每次请求时都这样做)。如果您不希望按钮回发,请让您的 OnClick 处理程序返回 false 以取消发布。如果您确实希望按钮回发,那么您有一个不同的问题,可能与不正确地使用动态控件有关。

于 2012-04-17T04:43:30.813 回答
0

解决了动态创建的控件。

于 2012-04-30T03:19:41.747 回答