我有一个包含表的Repeater。我想在转发器项模板中隐藏表的一些表格 这是ASPX源代码:
<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>
» 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 :(得分: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 :(得分:0)
最简单的方法是使用td的visible属性并根据服务器端表达式为其分配值。由于您没有提到希望显示/隐藏特定列的条件,因此以下代码是可能方式的示例:
<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 showCity
是在代码隐藏中声明的布尔变量(具有Protected
访问级别),并根据您要评估的条件设置。
请注意,您的表格单元格需要runat="server"
才能评估服务器表达式。
或者,您可以使用Ian提供的解决方案,但是您需要将整个表转换为Table Webserver控件,每个元素都标记为runat="server"
。