2010-03-19 7 views
3

j'ai TextBox (multiligne) et Label dans un UpdatePanel que je rafraîchisse avec javascript __doPostBack(upEditReminder,id);problème UpdatePanel ou bug possible

Puis je définir à la fois le texte et LabelTextBox à DateTime en cours.

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

Le problème est que Label est mis à jour mais TextBox jour est mis à jour une seule fois lorsque la page est chargée, mais pas quand __doPostBack(upEditReminder,id); est déclenchée. Je ne peux pas comprendre quel est le problème.

J'ai également essayé textarea runat="server" mais j'ai toujours le même problème.

Votre aide est grandement appréciée.

+0

Déjà essayé d'en faire une étiquette et de voir ce qui se passe alors? Ma conjecture est que vous ne pouvez pas mettre à jour votre boîte de texte plus d'une fois. – Younes

+0

quand je l'ai changé pour étiqueter alors il met à jour parfaitement – Woland

+0

Pourquoi ne pas le faire avec un simple javascript? C'est beaucoup plus simple et meilleur à tous points de vue. –

Répondre

3

Cela a fonctionné pour moi ... est-ce différent de ce que vous faites?

Code ASPX extrait:

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

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

En cliquant sur le lien "Mettre à jour" déclenche la postback du UpdatePanel qui rafraîchit via ajax et l'étiquette et textarea obtenir l'horodatage mis à jour .

+0

le code est à peu près le même mais il est en usercontrol avec est placé sur la page maître – Woland

0

Pourriez-vous l'essayer après avoir défini EnableViewState comme false dans cette zone de texte?

+0

J'ai essayé n'a pas fonctionné – Woland

0

Vous placez le texte de la zone de texte ailleurs dans votre code? Je suppose qu'il est écrasé quelque part ...

+0

maintenant c'est le seul endroit où il est modifié – Woland

0

Ajoutez un bouton dans le UpdatePanel. Cliquez sur le bouton, met-il à jour l'étiquette et la zone de texte?

En outre, l'appel que vous faites devraient avoir la ClientID du UpdatePanel qui ressemble à ceci:

__doPostBack ("ctrl00_ctrl01_upEditReminder", '');

0

De l'un de vos commentaires, j'ai remarqué que vous essayez de mettre à jour une zone de texte en dehors du panneau de mise à jour. Le problème ici est que vous ne pouvez pas mettre à jour quelque chose en dehors du panneau de mise à jour dans la publication de l'updatepanel. C'est l'un des inconvénients de l'utilisation d'un panneau de mise à jour.

Si vous voulez toujours utiliser un panneau de mise à jour, je vous suggère de mettre à jour les éléments de l'autre page en utilisant javascript et jQuery préférable après le rechargement de l'updatepanel. Vous pouvez utiliser un champ de saisie masqué dans le panneau de mise à jour pour transférer les données. Pour actualiser la zone de texte après la mise à jour, vous pouvez utiliser ce code JavaScript/jQuery:

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