2009-11-09 3 views
7

J'ai essayé, mais ne pouvait pas passer à travers: -Comment afficher/masquer la ligne du tableau <tr> à la page .ascx

Code

derrière

protected HtmlTableRow trComment; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Show/Hide table rows (TR) 
    trComment.Visible = ConfigUtil.DisplaySummaryComment; 
} 

Page .ascx

<tr id="trComment" runat="server"> 
    <td style="vertical-align:top; text-align:left;"> 
     <%#ConfigUtil.FieldLabels["PIComments"]%> 
     : 
    </td> 
    <td> 
     <%= Test.Comment %> 
    </td> 
</tr> 

Répondre

13

Votre ou Le code original ne fonctionne pas, non pas parce qu'il est incorrect, mais parce que vous avez probablement plus d'endroits avec trComment (auquel cas il devrait erreur) ou parce que votre code actuel est dans un modèle quelconque (dans un GridView, un Repeater). Ce dernier est le plus probable, car vous utilisez une instruction de données (<%#), qui est généralement placée dans un modèle de contrôle de base de données (mais pas nécessairement). Une façon de résoudre cela uniformément et facilement (de nombreuses façons existent et il est probablement préférable de ne pas utiliser de tables littérales de toute façon) est d'utiliser un asp:PlaceHolder, qui ne laisse pas de "traces" HTML, mais peut être utilisé pour basculer n'importe quel bloc du code HTML/ASP.NET:

<!-- toggle through OnLoad (can use ID as well) --> 
<asp:PlaceHolder runat="server" OnLoad="MakeVisibleOrNot"> 
    <tr> 
     ... 
    </ 
</asp:PlaceHolder> 

dans le code derrière

protected void MakeVisibleOrNot(object sender, EventArgs e) 
{ 
    ((Control) sender).Visible = ConfigUtil.DisplaySummaryComment; 
} 
+1

Une solution géniale. Merci – Jango

2

Try

trComment.Style.Add("display", "none"); 
+0

la '.Visible' dans ASP.NET empêche le rendu de ce contrôle complètement. Si cela ne fonctionne pas, 'display: none;' ne le fait pas non plus. – Abel

4
<tr id="trComment" runat="server"> 
    <td> 

    </td> 
</tr> 

Ensuite, dans votre méthode Page_Load() trouver votre élément et la visibilité définir vrai ou f ALSE comme ci-dessous

protected void Page_Load(object sender, EventArgs e) 
{ 
    trComment.Visible = false; //or trComment.Visible = true; as you wish 
} 

Hope this vous aide

0

Cela fonctionne également sans code derrière

     <asp:PlaceHolder runat="server" Visible ='<%# Convert.ToBoolean(Session["sess_isArtist"].ToString() == "1" || Session["sess_isBeneficiary"].ToString() == "1" ? "true": "false") %>'> 
<tr> 
    ... 
</ 
         </asp:PlaceHolder> 
Questions connexes