然后根据用户的需要 显示其它的列
绑定了姓名,年龄,性别 等 一真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;
ItemDataBound中
HtmlTableCell td = e.Item.FindControl("td111") as HtmlTableCell;
td.Visible = false;
#5
用js 较方便
#6
设置LinkButton或者Literal的visible为false也可以
#7
在Repeater的ItemDataBound事件中设置,如隐藏linName:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
((LinkButton)e.Item.FindControl("linName")).Visible = false;
}
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;
就冲楼主的相片,进来拼了
<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不管用,只能隐藏住第一行,后面的几行依然会出来,怎么弄啊?
<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;
ItemDataBound中
HtmlTableCell td = e.Item.FindControl("td111") as HtmlTableCell;
td.Visible = false;
#5
用js 较方便
#6
设置LinkButton或者Literal的visible为false也可以
#7
在Repeater的ItemDataBound事件中设置,如隐藏linName:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
((LinkButton)e.Item.FindControl("linName")).Visible = false;
}
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;
就冲楼主的相片,进来拼了
<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不管用,只能隐藏住第一行,后面的几行依然会出来,怎么弄啊?
<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()里面读取条件来判断隐藏.