2009-11-09 22 views
7

た.ascxページで表示/非表の行を表示するには、しかしを通じて得ることができなかった: -は、どのように私はこれを試してみました

コード

protected HtmlTableRow trComment; 

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

た.ascxページ

​​

答えて

13

trComment(エラーの場合)または現在のコードが何らかの種類のテンプレート(GridViewRepeater)の中にあるため、おそらくより多くの場所がある可能性があるためです。通常、データバインドされたコントロールテンプレート(ただし必ずしもそうではない)に配置されるデータステートメント(<%#)を使用するため、後者の可能性があります。

これを一律かつ容易に解決する1つの方法(多くの方法が存在し、とにかくリテラルテーブルを使用しないことをお勧めします)は、HTML「トレース」を残さずにブロックを切り替えるために使用できる HTML/ASP.NETコード:コード内

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

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

恐ろしい解決策。ありがとう – Jango

2

てみ背後

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

の背後にあるコードなしで動作するASP.NETでの '.Visible'は完全にそのコントロールのレンダリングを防止します。それでもうまくいかない場合は、 'display:none;'も表示されません。 – Abel

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

    </td> 
</tr> 

の後ろにあなたのPage_Load()メソッドでは、真またはfあなたの要素と設定し、視認性を見つけますalse

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

・ホープ以下のようにこれはあなたの

0

を助けこれも

     <asp:PlaceHolder runat="server" Visible ='<%# Convert.ToBoolean(Session["sess_isArtist"].ToString() == "1" || Session["sess_isBeneficiary"].ToString() == "1" ? "true": "false") %>'> 
<tr> 
    ... 
</ 
         </asp:PlaceHolder> 
関連する問題