2009-03-17 4 views
2

j'ai un contrôle utilisateur dont la structure est -panneau de mise à jour et javascript

<updatepanel UpdateMode="Always"> 
<ContentTemplate> 
    <asp:FormView> 
    <EditItemTemplate> 
     <table> 
      <tr id='tr1'> 
      <td> 
       Textbox1 
       btn1 
      </td> 
      </tr> 
      <tr id='tr2'> 
      <td> 
        textbox2 
      </td> 
      </tr> 
     <table> 
    </EditItemTemplate> 
    </asp:FormView> 
</ContentTemplate> 
</updatepanel> 

À la page suivante charge j'utiliser pour cacher TR2

ClientScriptManager cs = Page.ClientScript; 
csText.AppendLine(""); 
csText.AppendLine("if(document.getElementById('tr2')!=null) 
      document.getElementById('tr2').style.display = 'none';"); 
csText.AppendLine(""); 
cs.RegisterStartupScript(this, this.GetType(), csName, csText.ToString(), false); 

Cette partie fonctionne bien. Maintenant, sur le clic de la btn1, j'appelle le contrôle contextuel contextuel extendar. Cela provoque le tr2 à montrer à nouveau. Je sais que le script doit être en ligne avec le updatePanel. J'ai essayé d'utiliser ScriptManager.RegisterStartupScript(....); mais ne fonctionne pas. Aussi le updateMode doit toujours être de sorte que les données de pop extendar puissent être placées dans le Textbox1

Toute l'aide est appréciée. Merci

Répondre

0

Comme vous utilisez un UpdatePanel, vous n'avez pas besoin de javascript pour cela.

Si vous changez votre élément TR2 à ...

<tr id="tr2" runat="server"> 

cela vous permettra de contrôler dans votre code côté serveur. Pour masquer votre rangée de tr2, faites simplement ...

Ceci devrait garder les choses bien synchronisées sur les rappels.

+0

C'était ma première solution.Le problème avec ceci est que les données sont entrées dans les contrôles à l'intérieur de la rangée (tr2), ils ne sont pas liés correctement.Je veux dire que les données ne sont pas reçues après la publication. updatepanel.le plus éloigné dont je déclenche l'événement personnalisé pour récupérer les données –

Questions connexes