2010-03-19 46 views
3

TextBoxUpdatePanel我用JavaScript刷新__doPostBack(upEditReminder,id);UpdatePanel的問題或可能的錯誤

然後我同時設置LabelTextBox文本當前日期時間(多)和Label

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

已嘗試製作標籤並查看會發生什麼情況? 我的猜測是,你不能更新你的文本框多一次。 – Younes

+0

當我改變它的標籤,然後它完全更新 – Woland

+0

爲什麼不用簡單的JavaScript呢?這在各方面都簡單得多。 –

回答

3

這對我有效......它與你正在做的不同嗎?

ASPX代碼片段:

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

代碼隱藏代碼片段:

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

點擊「更新」鏈接觸發的UpdatePanel的回發其通過AJAX刷新它,無論是標籤和textarea的獲得更新的時間戳。

+0

代碼幾乎是一樣的,但是它在用戶控制下放在主頁面上 – Woland

0

您可以在將EnableViewState設置爲false的情況下嘗試一下嗎?

+0

以內的部分沒有工作 – Woland

0

你是否在你的代碼背後的其他地方設置了文本框文本?我猜它正在被覆蓋的地方...

+0

現在它的唯一被修改的地方 – Woland

0

在UpdatePanel中添加一個按鈕。點擊按鈕,是否更新標籤和文本框?

此外,你正在通話應有的UpdatePanel的客戶端ID看起來是這樣的:

__doPostBack(「ctrl00_ctrl01_upEditReminder」,「」);

0

從您的評論之一,我注意到你正在嘗試更新updatepanel之外的文本框。這裏的問題是你不能在updatepanel的回發中更新updatepanel之外的東西。這是使用更新面板的缺點之一。

如果您仍想使用更新面板,我建議您在更新面板重新加載後使用javascript更新其他頁面的元素,並更喜歡jQuery。您可以使用updatepanel內的隱藏輸入字段來傳輸數據。要在更新後刷新文本框,可以使用以下JavaScript/jQuery代碼:

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