【问题标题】:update panel is not working properly更新面板无法正常工作
【发布时间】:2011-06-19 20:47:26
【问题描述】:

我有一个更新面板。在这个面板中,有两个控件一个标签和一个下拉菜单。

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

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

这里出了什么问题?

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

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

有一个表格

它有一个文本框、一个图标和一个包含事件的下拉菜单。所有这些项目都显示在更新面板中。

点击图标将打开弹出窗口。文本框值是使用 javascript 从弹出窗口中填充的。

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

有没有办法禁用此文本框并在回发时仍保留该值?

【问题讨论】:

  • 您确定将其设置为只读而不是禁用吗?如果您使用 javascript 将文本框值设置为只读,则应保留该值。但是,已禁用,并且不会。

标签: asp.net


【解决方案1】:

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

编辑

如果您需要保留该值,您可以使用标签 + 隐藏字段。隐藏字段会进入服务器,因为它是一个“输入”控件,您可以在服务器端设置标签值。

类似的东西

客户端

 <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

【讨论】:

  • 您好克劳迪奥,感谢您的回复。我希望这个标签是一个只读字段。我不希望用户更改值。该值是从弹出窗口中填充的。我尝试将其更改为只读/禁用的文本框。它不保留价值。我如何做到这一点?
  • @Vivek Chandraprakash:我添加了一个可能的解决方案
  • @Vivek Chandraprakash: 很高兴为您提供帮助 :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多