我有一个转发器。我想隐藏和显示特定条件的特定列。我有三种类型的主题,它们的ID分别是0,1,2。现在我想在主题仅为2时显示该特定列。
我的代码是: -
<table id="table1" class="yui" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>
<a href='#' title="Click Header to Sort">EmpID #</a>
</th>
<th>Edit</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="Repaddressorbbl" runat="server" OnItemCommand="Repaddressorbbl_ItemCommand">
<ItemTemplate>
<tr id="gh" style="cursor: pointer" onclick="Select(this);">
<td style="text-align: center;">
<%#Eval("empid")%>
</td>
<td>
<asp:LinkButton ID="lknumber" runat="server" Text="Edit" CommandName="subjectid" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
<tfoot>
</tfoot>
</table>
答案 0 :(得分:4)
如果(主题)项ID为2,您可以捕获转发器的OnItemDataBound事件并隐藏列。
为了获得对该列的引用,请将其设置为服务器控件:
<td style="text-align: center;" id="COL_TO_HIDE" runat="server"><%#Eval("empid")%></td>
然后在转发器事件中,您只需查找控件并隐藏它:
protected void YourRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var subject = (Subject)e.Item.DataItem;
if (subject.Id == 2)
{
var col = e.Item.FindControl("COL_TO_HIDE");
col.Visible = false;
}
}
}
请注意,这只是一个简单的例子,您应该开始使用。
答案 1 :(得分:3)
我认为您应该首先使用<HeaderTemplate></HeaderTemplate>
和<FooterTemplate></FooterTemplate>
来定义表格的开头和结尾,以便整理一下。
您可以通过添加runat =“server”让表格在服务器上运行,并为列<td>
提供一个id和一个runat =“server”属性,以便您可以针对它编写服务器代码。然后,我将根据您的字段值eval绑定单元格的visible属性,或者使用attributes.add(“display:none”)或者只使用链接中建议的网格视图。
答案 2 :(得分:0)
<asp:Repeater ID="Repaddressorbbl" runat="server"
OnItemCommand="Repaddressorbbl_ItemCommand">
<ItemTemplate>
<tr id="gh" style="cursor: pointer" onclick="Select(this);">
<td style="text-align: center;">
<%#Eval("empid")%>
</td>
<% if (false){ %>
<td>
<asp:LinkButton ID="lknumber" runat="server"
Text="Edit" CommandName="subjectid" />
</td>
<% } %>
</tr>
</ItemTemplate>
</asp:Repeater>