我在另一个ListView中有一个ListView,我想在传递特定参数时隐藏内部ListView中的表列。根据下面的设置,如果URL包含“...?id = no”,我将如何隐藏ID列(标题和数据)?
<asp:ListView ID="ProcedureListView" runat="server">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<h4>
<%#Eval("PROCEDURE_CODE") %>
</h4>
<asp:ListView ID="BenefitListView" runat="server" DataSource='<%#Eval("benefits") %>'>
<LayoutTemplate>
<table cellpadding="5" class="indent">
<tr class="tableHeader">
<td>
ID
</td>
<td>
Benefit
</td>
</tr>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("benefit_id")%>
</td>
<td>
<%#Eval("benefit_name")%>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:ListView>
答案 0 :(得分:2)
如果您尝试从后面的代码执行此操作,那么您可以这样做:
在外部ListView的onBind事件上,您将找到内部listview控件,然后找到所需的标签并将visible属性更改为false。我在你的另一个问题上回答了这个问题。
祝你好运!答案 1 :(得分:1)
您可以将它们包装在占位符中,然后动态设置占位符的可见性以删除列...(您将需要两个占位符)
答案 2 :(得分:0)
您可以执行以下操作:
<% if (Request.QueryString["id"] != "no") { %>
<td>
<%#Eval("benefit_id")%>
</td>
<% } %>
<td>
<%#Eval("benefit_name")%>
</td>
并为标题执行相同操作。
编辑:你不清楚,但是从之前的评论中,如果你想在后面的代码中执行此操作,那么你应该将id标头和id数据放在标签服务器控件中。然后你可以检查后面代码中的查询字符串,在数据绑定上你可以将visible属性设置为false。
这里有一些选项,这取决于你最满意的是什么。
答案 3 :(得分:0)
将一个css类添加到HTML标记中,然后从代码中将css类注入到页面中,如此
<td id='' class='hideMe'>
ID
</td>
代码隐藏在预渲染事件
中if(id==123){
// please refer to help file for exact syntax
// but essentially you will be injecting
// <style type='text/css'>
// .hideMe{display:none;}
// </style>
}
或者,您可以在样式表中包含上述css类,并仅根据ID将其添加到要隐藏的标记