怎么隐藏Repeater中的某一列

时间:2021-04-07 19:32:15
我现在有一个用户信息表 表中有十几列 我现在把它们全部在Repeater中显示出来
然后根据用户的需要 显示其它的列
绑定了姓名,年龄,性别 等 一真10列数据. 如果用户只要求显示姓名,年龄 就隐藏其它八列

前台的绑定
<td style="height: 25px">
 姓名</td>
<td style="height: 25px">
 年龄</td>


<td>
<asp:LinkButton runat="server" ID="linName"  Text='<%# Eval("UserName") %>'></asp:LinkButton>
</td>
<td>
<asp:Literal runat="server" ID="lisAge" Text='<%# Eval("Age") %>'></asp:Literal>
</td>

在后台怎么去操作隐藏某一列?

12 个解决方案

#1


display

#2


给一个多选框 写个JS。循环隐藏和显示。

#3


不能直接在后台隐藏某一列吗?

#4


给td一个id,runat="server"

ItemDataBound中

HtmlTableCell td = e.Item.FindControl("td111") as HtmlTableCell;
td.Visible = false;

#5


用js 较方便

#6


引用 3 楼 dengyi422 的回复:
不能直接在后台隐藏某一列吗?


设置LinkButton或者Literal的visible为false也可以

#7


在Repeater的ItemDataBound事件中设置,如隐藏linName:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        ((LinkButton)e.Item.FindControl("linName")).Visible = false;
    }

#8


<td id="tdUserName" runat="server"> 
<asp:LinkButton runat="server" ID="linName"  Text=' <%# Eval("UserName") %>'> </asp:LinkButton> 
</td> 
<td> 
<asp:Literal runat="server" ID="lisAge" Text=' <%# Eval("Age") %>'> </asp:Literal> 
</td> 

ItemDataBound中 

HtmlTableCell td = e.Item.FindControl("tdUserName") as HtmlTableCell; 
td.Visible = false;
就冲楼主的相片,进来拼了

#9


8楼的可以.  这个就是隐藏整列了

#10


我用了js 隐藏但是只隐藏了第一行


<td> 
<asp:Literal runat="server" ID="lisAge" Text=' <%# Eval("Age") %>'> </asp:Literal> 
</td> 

如果有五条数据 我隐藏这个TD不管用,只能隐藏住第一行,后面的几行依然会出来,怎么弄啊?

#11



    <script type="text/javascript">
    function hideTest()
    {
        var test=document.getElementById('tb_test').getElementsByTagName('td');
        if(test.length>0)
        {
            var i=0;
            for(i=0;i<test.length;i++)
            {
                if(test[i].name=="td_3")
                {
                    test[i].style.display="none";
                   
                }
             }
        } 
    }
    </script>
</head>
<body onload="hideTest()" >
    <form id="form1" runat="server">
    <div >
  
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" 
            ondatabinding="Repeater1_DataBinding" 
            onitemdatabound="Repeater1_ItemDataBound1">
        <HeaderTemplate>
        <table id="tb_test" border="1">
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
            <td  name='td_1' ><%# DataBinder.Eval(Container.DataItem, "CustomerID", "{0}")%></td>
            <td name='td_2' ><%# DataBinder.Eval(Container.DataItem, "CompanyName", "{0}")%></td>
            <td name='td_3'  ><%# DataBinder.Eval(Container.DataItem, "ContactName", "{0}")%></td>
            <td name='td_4' ><%# DataBinder.Eval(Container.DataItem, "ContactName", "{0}")%></td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
        </asp:Repeater>
         
    </div>
    </form>
</body>


我测试了一下 是可行的.  至于你要隐藏哪一列, 你把判断条件从后台存在一个隐藏域控件,然后在hideTest()里面读取条件来判断隐藏.

#1


display

#2


给一个多选框 写个JS。循环隐藏和显示。

#3


不能直接在后台隐藏某一列吗?

#4


给td一个id,runat="server"

ItemDataBound中

HtmlTableCell td = e.Item.FindControl("td111") as HtmlTableCell;
td.Visible = false;

#5


用js 较方便

#6


引用 3 楼 dengyi422 的回复:
不能直接在后台隐藏某一列吗?


设置LinkButton或者Literal的visible为false也可以

#7


在Repeater的ItemDataBound事件中设置,如隐藏linName:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        ((LinkButton)e.Item.FindControl("linName")).Visible = false;
    }

#8


<td id="tdUserName" runat="server"> 
<asp:LinkButton runat="server" ID="linName"  Text=' <%# Eval("UserName") %>'> </asp:LinkButton> 
</td> 
<td> 
<asp:Literal runat="server" ID="lisAge" Text=' <%# Eval("Age") %>'> </asp:Literal> 
</td> 

ItemDataBound中 

HtmlTableCell td = e.Item.FindControl("tdUserName") as HtmlTableCell; 
td.Visible = false;
就冲楼主的相片,进来拼了

#9


8楼的可以.  这个就是隐藏整列了

#10


我用了js 隐藏但是只隐藏了第一行


<td> 
<asp:Literal runat="server" ID="lisAge" Text=' <%# Eval("Age") %>'> </asp:Literal> 
</td> 

如果有五条数据 我隐藏这个TD不管用,只能隐藏住第一行,后面的几行依然会出来,怎么弄啊?

#11



    <script type="text/javascript">
    function hideTest()
    {
        var test=document.getElementById('tb_test').getElementsByTagName('td');
        if(test.length>0)
        {
            var i=0;
            for(i=0;i<test.length;i++)
            {
                if(test[i].name=="td_3")
                {
                    test[i].style.display="none";
                   
                }
             }
        } 
    }
    </script>
</head>
<body onload="hideTest()" >
    <form id="form1" runat="server">
    <div >
  
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" 
            ondatabinding="Repeater1_DataBinding" 
            onitemdatabound="Repeater1_ItemDataBound1">
        <HeaderTemplate>
        <table id="tb_test" border="1">
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
            <td  name='td_1' ><%# DataBinder.Eval(Container.DataItem, "CustomerID", "{0}")%></td>
            <td name='td_2' ><%# DataBinder.Eval(Container.DataItem, "CompanyName", "{0}")%></td>
            <td name='td_3'  ><%# DataBinder.Eval(Container.DataItem, "ContactName", "{0}")%></td>
            <td name='td_4' ><%# DataBinder.Eval(Container.DataItem, "ContactName", "{0}")%></td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
        </asp:Repeater>
         
    </div>
    </form>
</body>


我测试了一下 是可行的.  至于你要隐藏哪一列, 你把判断条件从后台存在一个隐藏域控件,然后在hideTest()里面读取条件来判断隐藏.