更新面板无法正常工作

时间:2011-06-19 20:47:26

标签: asp.net

我有一个更新面板。在此面板中,有两个控件标签和下拉列表。

我正在使用javascript更改标签的值。下拉列表中有一个selectIndexChanged事件。

每当此事件触发时,它都会清除我使用javascript设置的标签值。

这里出了什么问题?

--------编辑------------

感谢您的回复。据我所知,由于label不是用户输入字段,因此不会在回发时保留该值。让我解释一下我的情况。

有表格

它有一个文本框,一个图标和一个包含事件的下拉列表。所有这些项目都存在于更新面板中。

单击该图标将打开弹出窗口。使用javascript从弹出窗口填充文本框值。

我不希望用户编辑此文本框的值。所以我改变了readonly。它不保留值。

有没有办法让这个文本框被禁用并仍然保留回发值?

2 个答案:

答案 0 :(得分:2)

标签不是“输入”控件,因此您设置的值不会发送到服务器,ViewState机制可以恢复回发值。这与UpdatePanel无关。

修改

如果需要值保持不变,可以使用Label + a HiddenField。隐藏字段将进入服务器,因为它是一个“输入”控件,您可以在服务器端设置Label值。

像这样的东西

客户端

 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
 <asp:HiddenField ID="HiddenField1" runat="server" />

...

document.getElementById('<%= Label1.ClientID %>').innerHTML = 'test';"
document.getElementById('<%= HiddenField1.ClientID %>').value= 'test';"

服务器端(您在回发时执行此逻辑)

Label1.Text = HiddenField1.Value

答案 1 :(得分:0)

如果您通过javascript更改标签,服务器根本不知道您这样做了。请记住,标签只是一个span元素。每次发回时都不会将整个页面发送回服务器,只发送表单元素。如果您希望服务器知道这一点,您需要将更改放入隐藏的表单元素(例如)。