我在TextBox
中有Label
(多行)和UpdatePanel
,我使用javascript __doPostBack(upEditReminder,id);
然后我将Label
和TextBox
文本都设置为当前日期时间。
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"
,但仍有同样的问题。
非常感谢您的帮助。
答案 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);
});