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;