UpdatePanel刷新<input type =“image”/>但不是type =“按钮

时间:2012-04-17 04:36:45

标签: asp.net html updatepanel

我的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会消失)。

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

我在每个位置运行带有断点的页面,我从代码隐藏到触摸表无效,我真的没有看到任何可能导致UpdatePanel以程序方式清除的内容。 / p>

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

使用动态创建的控件解决。