Asp.net 是否可以在asp:repeater中隐藏列?
我需要在Asp.net 是否可以在asp:repeater中隐藏列?,asp.net,Asp.net,我需要在asp:repeater中隐藏一列。最好是在服务器端隐藏它们,而不仅仅是通过CSS在HTML中隐藏。中继器有一个ID,但是我在调试器中很难找到它所拥有的表。考虑到中继器是如何工作的,我甚至不确定它是否可能。我给HTML表一个ID并将其设置为runat=“server”,但它出错了 正在查找的文件意外结束 标签 我怎么做?我需要切换到gridview吗?我可以用gridview轻松地完成这项工作 <asp:repeater id="repeaterId" runat="server"
asp:repeater
中隐藏一列。最好是在服务器端隐藏它们,而不仅仅是通过CSS在HTML中隐藏。中继器有一个ID
,但是我在调试器中很难找到它所拥有的表。考虑到中继器是如何工作的,我甚至不确定它是否可能。我给HTML表
一个ID
并将其设置为runat=“server”
,但它出错了
正在查找的文件意外结束
标签
我怎么做?我需要切换到gridview吗?我可以用gridview轻松地完成这项工作
<asp:repeater id="repeaterId" runat="server">
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "col1")%></td>
<td nowrap="nowrap" align="left"><%# DataBinder.Eval(Container.DataItem, "col2")%></font></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate> <tr>
<td><%# DataBinder.Eval(Container.DataItem, "col1")%></td>
<td nowrap="nowrap" align="left"><%# DataBinder.Eval(Container.DataItem, "col2")%></td>
</AlternatingItemTemplate>
<HeaderTemplate>
<table id="rPhysicalTable" class="cssTable">
<tr class="aClass">
<th>col1</th>
<th>col2</th>
</tr>
</HeaderTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:repeater>
可乐
可乐
您可以使用中继器的ItemDataBound
事件。在此事件中,您可以根据需要隐藏任何行或列。这是一个MSDN
在这种情况下,您可以使用FindControl
方法查找控件并将其Visible
属性设置为false。
e.Row.FindControl("ControlID");
按照蒂姆·施梅尔特的建议,我转向了gridview。这样我可以使用
gridviewObj.Columns[index].Visible = false;
从而避免在中继器中隐藏多个
。我们可以使用中继器ItemDataBound事件隐藏html表的列
为此,我们为要隐藏的表单元格指定id,并将单元格标记为runat=“server”
在上面的代码中,表“col1”的第一列被设置为隐藏以以下方式隐藏中继器控件中的一列:
repearter的ItemDataBound偶数使用以下代码
HtmlTableCell tdTableCell = (HtmlTableCell)e.Item.FindControl("tdTableCell");
tdTableCell.Visible = False;
在收割台单元内的前pade中,应如下所示
<td id="tdTableCell" runat="server"></td>
通过这种方式,我可以在中继器控件中隐藏列。您所说的“隐藏列”是什么意思?一个中继器没有列,它只为它绑定的每个项目发出内容。如果你想把转发器用作表,你应该真正考虑使用GRIDVIEW。@乔尔C,对,我的意思是“考虑中继器是如何工作的”。对不起,我没说清楚@蒂姆·施梅尔特——我同意。中继器似乎不太合适。我将切换到gridview。如果你想把你的评论转移到一个答案上,我会把它标记为答案。实际上没有一个专栏需要处理。该表具有要处理的标题、alternatingitemtemplate和item template。我要切换到gridview。@P.Brian.Mackey:如果你想使用它,你可以在中继器控制中使用它。如果您想要编辑、更新、删除之类的功能,那么您应该使用Gridview,但如果您只想显示数据,那么您可以使用Repeater。无论如何,选择权归你。在这种情况下,我喜欢gridview的原因是因为我可以执行gridviewObj.Columns[5]。Visible=false代码>。我不能用中继器轻易做到这一点。即使我使用Row.FindControl
,也找不到单个控件。我需要识别几个
并隐藏每个。
HtmlTableCell tdTableCell = (HtmlTableCell)e.Item.FindControl("tdTableCell");
tdTableCell.Visible = False;
<td id="tdTableCell" runat="server"></td>
using System.Web.UI.HtmlControls;