2012-07-02 57 views
0

如何在Asp Repeater中隱藏特定列?在這種情況下,我想隱藏POwner!中繼器控制中的列問題

<ItemTemplate> 
    <tr> 
     <td> 
      <%#Eval("Priority") %> 
     </td> 
     <td> 
      <%#Eval("ProjectName") %> 
     </td> 
     <td> 
      <asp:Label ID="Label1" runat="server" Text='<%# Eval("POwner") %>'></asp:Label> 
    </tr> 
</ItemTemplate> 

在代碼中添加此背後提供了一個錯誤:■

public void Repeater1_ItemDatabound(Object Sender, RepeaterItemEventArgs e) 
{ 
    Repeater a =(Repeater)e.Item.FindControl("Label1"); 
    a.Visible = false; 
} 
+1

是'Label1'一個'Repeater' ... – xandercoded

+0

它是在一箇中繼器控制 – Pradit

+1

,那麼你爲什麼要鑄造一個'Repeater'?! :) – xandercoded

回答

0

Label1是一個Label控制,而不是Repeater,這就是爲什麼你會得到一個錯誤

您還需要添加一個if條件,因此您只能獲得項目的Label1,而不是頁眉或頁腳。

與此

if (e.Item.ItemType == ListItemType.Item || 
    e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
    Label label = (Label)e.Item.FindControl("Label1"); 
    label.Visible = false; 
} 
+0

未將對象引用設置爲對象的實例。這是我得到的錯誤! – Pradit

+0

@ user1373852:只是爲了確認,在更改代碼之後仍然會收到同樣的錯誤嗎? –

+0

是標籤標籤=(標籤)e.Item.FindControl(「Label1」); label.Visible = false; – Pradit

0

嘗試你應該投的Label1的標籤而不是一箇中繼器試試這個:

Label a =(Label)e.Item.FindControl("Label1"); 
a.Visible = false; 
0

我想這是不可能的。但我可以被誤認爲

也許你可以嘗試使用您的項目模板中以下內容:

<tr> 
<td runat="server" visible='<%# expression %'> 
...... 
</td> 
<td> 
.... 
</tr> 

或使用ListView控件代替直放站