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