2016-12-06 19 views
0

我有一个实例,它显示了一个listView。.NET webform隐藏后端服务器中的HTML td列(更新面板,内容模板)

listview在更新面板中,它需要响应每个数据源绑定并通过检查Session来显示/隐藏listView表中的列。

我不能简单地添加

<% if((int)Session["v1"] ==1) { %> <td>Hi</td> <%}%> 

的异常抛出说,当<%%>中存在的更新面板无法更新。

(但它适用于控制更新面板之外)

我想我可以通过JavaScript的做,但我只是想知道是否有一个更聪明的方式在后台做。

class='<%# HiddenClass %>' 

和onload事件(变化HiddenClass空字符串中改变这个参数,如果该列应显示。

它适用于项目的列(在ItemTemplate中),但它不工作项目的标题栏LayoutTemplate模板(我认为这是因为数据源绑定仅重新呈现的字段在的ItemTemplate和不包括LayoutTemplate模板

当前,我可以隐藏它来设置runat =“server”如果对于listview的每个数据源绑定,则可见为false。但是当我需要隐藏更多的列时(需要创建更多的ID并且asp.net不能按类设置可见的字段),它看起来非常复杂。

回答

0

PlaceHolder包装<td></td>,并将其设置为来自代码后面的可见性属性。

<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false"> 
    <td>Hi</td> 
</asp:PlaceHolder> 

然后在后面

if ((int)Session["v1"] == 1) 
{ 
    PlaceHolder1.Visible = true; 
} 
+0

码喜,这样做是一样的,因为我设置ID和RUNAT =“服务器”的​​...他们都将引发与布局异常模板未加载(当数据源中没有记录时,ListView将加载其空模板而不是LayoutTemplate,因此无论占位符还是在数据绑定期间也会引发异常 – SKLTFZ

+0

我刚发现例外可以避免,这是我的错误,但问题是即使通过使用占位符,我仍然需要创建两个占位符(一有两个HTML td我需要隐藏,他们的位置不粘在一起。 – SKLTFZ