2009-03-25 7 views
0

テーブルを含むリピータがあります。私はここでASPXソースコードがあるリピーター項目テンプレート でテーブルの一部tablecellsを非表示にする:リピータのtdの値を取得します

<ItemTemplate> 
    <table style="width: 100%" align="center"> 
    <tr> 
     <td style="width: 60px;" align="center"> 
     <img src="upload/companylogo/<%# Eval("companylogo") %>" /> 
     </td> 
     <td align="left"> 
     <asp:Label runat="server" CssClass="lblcname" ID="Label1" Text='<%# Eval("companyname") %>' /></td> 
     <td align="right"> 
     <asp:Label runat="server" ID="Label2" Text='<%# Eval("city") %>' /></td> 
    </tr> 
    <tr> 
     <td runat="server" id="address" colspan="3"> 
     <asp:Label runat="server" ID="Label3" Text='<%# Eval("address") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td colspan="3" align="right" id="vp" runat="server"> 
     <a href='nfonews.aspx?id=<%# Eval("mpid") %>'>view Profile</a> 
     &raquo; Send Inquiry </td> 
    </tr> 
    <tr> 
     <td colspan="3" style="height: 20px; background-image: url(image/stripe_head_bg.png)"></td> 
    </tr> 
    </table> 
</ItemTemplate> 

そして、私のコードビハインド:

SqlDataReader dr = cmd.ExecuteReader(); 
if (dr.HasRows == true) 
{ 
    dr.Read(); 
    if (dr["payment"].ToString() == "Yes") 
    { 
    Repeater1.DataBind(); 
    if (Repeater1.Items.Count == 0) 
    { 
     Repeater1.Visible = false; 
    } 
    else 
    { 
     Repeater1.Visible = true; 
    } 
    } 
} 
+0

あなたのコードはちょっと混乱しているようです。 Repeater1コントロールのデータソースは何ですか、それはあなたのSQLDataReaderであると思われますか? –

+0

また、次の操作を実行できます。Repeater1.Visible =(Repeater1.Items.Count> 0); –

答えて

3

グリッドのItemDataBoundイベントでは、 FindControlを使用してセルを検索します。

属性を追加します。 onitemdatabound="myRepeater_ItemDataBound"

は次に

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    ListItemType rowType = (ListItemType)e.Item.ItemType; 
    if (rowType == ListItemType.Pager || rowType == ListItemType.Header || rowType == ListItemType.Footer) 
     return; 

    TableCell cell = (TableCell)e.Item.FindControl("address"); 
} 
+1

これは、OPが実質的にテーブルをテーブルWebサーバコントロールに変更する必要があります。 – Cerebrus

+1

申し訳ありませんが、私は "HtmlTableCell"と言ってASP以外のHTMLコントロールを参照していました –

0

コードビハインドに最も簡単な方法は、TDの可視属性を使用して、それをサーバー側の式に基づいて値を割り当てることとすることができます。あなたは、特定の列を表示/非表示を希望する条件を言及していないので、以下のコードは、可能な方法の一例です:

<table style="width: 100%" align="center"> 
    <tr> 
    <td style="width: 60px;" align="center" runat="server" visible="<%#showCompanyLogo %>"> 
     <img src="upload/companylogo/<%# Eval("companylogo") %>" /> 
    </td> 
    <td align="left" runat="server" visible="<%#showCompanyName %>"> 
     <asp:Label runat="server" CssClass="lblcname" ID="Label1" Text='<%# Eval("companyname") %>' /></td> 
    <td align="right" runat="server" visible="<%#showCity %>"> 
     <asp:Label runat="server" ID="Label2" Text='<%# Eval("city") %>' /></td> 
    </tr> 
... 
</table> 

showCompanyLogo, showCompanyName and showCityProtectedアクセスレベルを持つ)ブール変数は、コード内で宣言されていますあなたが評価したいどんな条件にしてもかまいません。

評価するサーバー式には、表のセルがrunat="server"である必要があります。

また、Ianが提示するソリューションを使用することもできますが、表全体をrunat="server"とマークされた単一の要素を持つテーブルWebサーバーコントロールに変換する必要があります。

関連する問題