我有一个更新面板。在此面板中,有两个控件标签和下拉列表。
我正在使用javascript更改标签的值。下拉列表中有一个selectIndexChanged事件。
每当此事件触发时,它都会清除我使用javascript设置的标签值。
这里出了什么问题?
--------编辑------------
感谢您的回复。据我所知,由于label不是用户输入字段,因此不会在回发时保留该值。让我解释一下我的情况。
有表格
它有一个文本框,一个图标和一个包含事件的下拉列表。所有这些项目都存在于更新面板中。
单击该图标将打开弹出窗口。使用javascript从弹出窗口填充文本框值。
我不希望用户编辑此文本框的值。所以我改变了readonly。它不保留值。
有没有办法让这个文本框被禁用并仍然保留回发值?
答案 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元素。每次发回时都不会将整个页面发送回服务器,只发送表单元素。如果您希望服务器知道这一点,您需要将更改放入隐藏的表单元素(例如)。