【问题标题】:updatepanel problem or possible bug更新面板问题或可能的错误
【发布时间】:2011-01-29 10:53:13
【问题描述】:

我在UpdatePanel 中有TextBox(多行)和Label,我用javascript __doPostBack(upEditReminder,id); 刷新了它们

然后我将LabelTextBox 文本都设置为当前日期时间。

protected void upReminder_Onload(object sender, EventArgs e)
{
    lbTest.Text = DateTime.Now.ToString();
    tbReminder.Text = DateTime.Now.ToString();

问题是Label 更新了,但TextBox 日期仅在页面加载时更新一次,而在触发__doPostBack(upEditReminder,id); 时不更新。 我不知道是什么问题。

我也试过 textarea runat="server" 但还是有同样的问题。

非常感谢您的帮助。

【问题讨论】:

  • 已经尝试为它制作标签,看看会发生什么?我的猜测是你不能多次更新你的文本框。
  • 当我将其更改为标签时,它会完美更新
  • 为什么不用简单的javascript来做呢?它在各个方面都更简单更好。
  • 因为我在这个控件中也有很少的其他 asp 用户控件我无法用 js 控制 + 我已经有工作应用程序
  • @Woland,好的,那我明白了。我对更新面板的看法很简单:永远不要使用它们。我认为使用 jquery 或其他一些 js 框架自己编写 ajax 调用总是容易得多。但这只是个人意见。

标签: c# asp.net updatepanel


【解决方案1】:

这对我有用...与您正在做的不同吗?

aspx代码sn-p:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel">
    <ContentTemplate>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>
<a href="#" onclick="__doPostBack('UpdatePanel1','');">Update</a>

sn-p 代码隐藏:

protected void UpdatePanel(object sender, EventArgs e)
{
    Label1.Text = DateTime.Now.ToString();
    TextBox1.Text = DateTime.Now.ToString();
}

单击“更新”链接会触发 UpdatePanel 的回发,该回发会通过 ajax 刷新它,并且标签和文本区域都会获得更新的时间戳。

【讨论】:

  • 代码几乎相同,但它在用户控件中,并放置在母版页上
【解决方案2】:

你可以在那个文本框中设置 EnableViewState 为 false 后试试吗?

【讨论】:

    【解决方案3】:

    您是否在代码后面的任何其他位置设置文本框文本?我猜它在某个地方被覆盖了......

    【讨论】:

      【解决方案4】:

      在 UpdatePanel 中添加一个按钮。点击按钮,是否同时更新标签和文本框?

      此外,您进行的调用应具有更新面板的 ClientID,如下所示:

      __doPostBack("ctrl00_ctrl01_upEditReminder",'');

      【讨论】:

        【解决方案5】:

        从您的一个 cmets 中,我注意到您正在尝试更新更新面板之外的文本框。这里的问题是您无法在更新面板的回发中更新更新面板之外的内容。这是使用更新面板的缺点之一。

        如果您仍想使用更新面板,我建议您在更新面板重新加载后使用 javascript 更新其他页面的元素,最好使用jQuery。您可以使用更新面板内的隐藏输入字段来传输数据。要在更新后刷新文本框,您可以使用以下 JavaScript/jQuery 代码:

        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { 
            var reminder = $("[id$='hidReminder']").val();
            $("[id$='tbReminder']").val(reminder);
        });
        

        【讨论】:

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