我有一个实例,它显示了一个listView。
listView在更新面板中,它需要通过检查会话来响应每个数据源绑定,并在ListView表中显示/隐藏一列。
我不能简单地添加
<% if((int)Session["v1"] ==1) { %> <td>Hi</td> <%}%>
例外投掷说,更新面板无法更新时。
(但它适用于更新面板外部的控制)
我认为我可以通过JavaScript做到这一点,但是我只想确保在后端有更聪明的方法。
class='<%# HiddenClass %>'
并在on载过程中更改此参数(如果要显示列,请将hiddenclass更改为空字符串。
它适用于项目的列(在 itemTemplate 中),但对项目的标题列 layoutTemplate 不起作用(我认为这是因为数据源仅绑定数据源在 itemTemplate 中重新渲染了字段,而未包括 layoutTemplate 。
当前,如果对于listView的每个数据源绑定,我可以将其隐藏为false可见false。但是,当我需要隐藏更多的列时,看起来非常复杂(需要创建更多ID和ASP.NET,无法按班级设置字段)。
用PlaceHolder
包裹<td></td>
并将其可见性属性从代码背后设置。
<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false">
<td>Hi</td>
</asp:PlaceHolder>
然后在
后面的代码中if ((int)Session["v1"] == 1)
{
PlaceHolder1.Visible = true;
}