2013-08-02 85 views
1

在這裏,我發現一次代碼很容易隱藏中繼器列。它的效果很好。如何隱藏中繼器中的列?

<ItemTemplate> 
     <tr> 
      <td><asp:Label runat="server" ID="label1" /></td> 
      <% if (MustBeVisible) { %> 
      <td"><asp:Label runat="server" ID="label2" /></td> 
      <% } %> 
     </tr> 
</ItemTemplate> 

但現在,我需要爲了在的ItemDataBound將顏色條件的一類應用到的TableRow並使其RUNAT =「服務器」,但是當我添加RUNAT =「服務器」我的屬性在運行時發生衝突併發出警告。

ASP.NET runtime error: Code blocks are not supported in this context

的想法是,例如,在的ItemDataBound評估label1的,如​​果這是真的必須應用類上的TR,使其灰色。

任何想法的最佳方法或如何解決這個問題?

回答

2

方法1:

首先,定義一個布爾值屬性,比如說在你的數據項級ShouldBeGreyed (如果可能的話)。該屬性應返回數據項是否變灰。

<ItemTemplate> 
    <tr<%# ((bool)Eval("ShouldBeGreyed"))?"class='grey'":"" %>> 
    ... 
</ItemTemplate> 

方法2:

然後,在你的中繼標記使用此

首先,定義在後臺代碼的方法,說ShouldBeGreyed,像這樣:

protected bool ShouldBeGreyed(object item) 
{ 
    // cast to your data-item 
    var dataItem = (<class-of-your-data-item>)item; 

    // Determine if it should be greyed out 
    // bool shouldBeGreyed = ... 
    ... 

    return shouldBeGreyed; 
} 

現在在您的轉發器標記中使用此代碼:

<ItemTemplate> 
    <tr<%# ((bool)ShouldBeGreyed(Container.DataItem))?"class='grey'":"" %>> 
    ... 
</ItemTemplate> 
0

使用這樣的東西..在標籤的Visible部分寫下該方法。

<td><asp:Label runat="server" ID="label2" Visible="<%# MustBeVisible() %>" /></td> 

如果你想td是可見/可見使用這種

<td runat="server visible="<%# MustBeVisible() %>"><asp:Label runat="server" ID="label2" /></td> 
0

如果你做的<td id="tablerow" runat="server"/>可以使用這樣做:

tablerow.Attributes.Add("class", className);