2013-01-23 2 views
0

Je souhaite actualiser un contrôle utilisateur dans UpdatePanel, mais je voudrais également l'actualiser avec différentes valeurs de propriété.Comment mettre à jour le contrôle utilisateur dans UpdatePanel?

<asp:UpdatePanel runat=server ID=up1> 
<Triggers> 
      <asp:AsyncPostBackTrigger controlid="but01" eventname="Click" /> 
     </Triggers> 
<ContentTemplate> 
<asp:Button runat="server" Text="Test" ID="but01" /> 
<UC:Uc runat=server ID="Uc1" /> 
</ContentTemplate> 
</asp:UpdatePanel> 



Codebehind for but01 click is 
void but01_Click(object sender, EventArgs e) 
{ 

this.Uc1.ID = 1; 
this.Uc1.Length = 50; 
} 

J'ai testé ce code, et le contrôle de l'utilisateur est en cours d'actualisation, mais de nouvelles valeurs ID = 1, Longueur = 50 ne sont pas appliquées.

Code de contrôle est assez simple derrière

namespace Admin.Web.Controls 
{ 

    public partial class Uc1 : System.Web.UI.UserControl 
    { 

     private string p_to; 
     private string p_from; 
     private string p_subject; 
     private string p_body; 
     private string p_priority; 
    } 


     protected void Page_Load(object sender, EventArgs e) 
     { 

      this.txtFrom.Text = p_from; 
      this.txtTo.Text = p_to; 
      this.txtSubject.Text = p_subject; 
      this.txtBody.Text = p_body; 

     } 

     public string Subject 
     { 
      get 
      { 
       return p_subject; 
      } 
      set 
      { 
       p_subject = value; 
      } 
     } 

     public string From 
     { 
      get 
      { 
       return p_from; 
      } 
      set 
      { 
       p_from = value; 
      } 
     } 

     public string To 
     { 
      get 
      { 
       return p_to; 
      } 
      set 
      { 
       p_to = value; 
      } 
     } 

     public string Body 
     { 
      get 
      { 
       return p_body; 
      } 
      set 
      { 
       p_body = value; 
      } 
     } 

} 

tête ascx est

<%@ Control Language="c#" Inherits="Admin.Web.Controls.Uc1" AutoEventWireup="true" Codebehind="Uc1.ascx.cs" %> 

Lorsque je lance le contrôle de l'utilisateur de la page ASPX lors du chargement de la page, tout est ok. Lors de la publication à partir du panneau de contrôle, le contrôle utilisateur est actualisé (vérifié avec Label + time), mais aucune valeur n'est transmise au contrôle utilisateur.

+0

Pouvez-vous poster le code pour le contrôle de l'utilisateur? Au moins les parties qui traitent de ce que 'longueur' et' ID' signifient dans ce contexte, et de tout code code-behind qui pourrait également changer ces valeurs. –

+0

@AnnL. J'ai posté du code derrière le code. – mko

+0

Impossible de voir la référence à la propriété Length dans le contrôle usercontrol. Ou voulez-vous dire que vous essayez d'utiliser ces autres propriétés de la même manière? –

Répondre

2

Remove tag Déclenche

http://msdn.microsoft.com/en-us/library/Bb399001(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2

OU

Déplacer asp: Bouton à l'extérieur de UpdatePanel.

http://msdn.microsoft.com/en-us/library/Bb399001(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-5

Mise à jour:

S'il vous plaît faire le setter et getter du contrôle que -

public string Subject 
{ 
    get { return txtSubject.Text; } 
    set { txtSubject.Text = value; } 
} 
+0

qui n'a fait aucune différence – mko

+1

S'il vous plaît vérifier ma réponse à jour. Une fois que vous avez défini toutes les propriétés de votre contrôle personnalisé comme je le suggère, cela devrait fonctionner. Veuillez vous assurer que but01 click event est attaché à but01_Click. – Win

+0

en fait, vous avez raison - la propriété doit être liée directement à control (txtSubject), et elle ne permet pas d'assigner la valeur à un var local et ensuite de l'utiliser dans le chargement de la page. Je ne comprends pas pourquoi? – mko

Questions connexes