updatepanel问题或可能的错误

时间:2010-03-19 12:37:18

标签: c# asp.net updatepanel

我在TextBox中有Label(多行)和UpdatePanel,我使用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",但仍有同样的问题。

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

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

aspx code snippet:

<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>

codebehind片段:

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

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

答案 1 :(得分:0)

您可以在该文本框中将EnableViewState设置为false后尝试吗?

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

此外,您正在进行的通话应该具有updatepanel的ClientID,如下所示:

__ doPostBack( “ctrl00_ctrl01_upEditReminder”, '');

答案 4 :(得分:0)

根据您的一条评论,我发现您正在尝试更新更新面板之外的文本框。这里的问题是您无法在updatepanel的回发中更新updatepanel之外的内容。这是使用更新面板的一个缺点。

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

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