日期:2014-05-18  浏览次数:20469 次

如何有条件显示或不显示DataList ItemTemplate里的某些内容
现有数据库中有一个表,用DataList显示。比如有10列,现在需要根据电脑显示器宽度显示不同列数。如果是640x460,就显示5列,其余5列不显示。如果是1024x768,就全部显示

假设已经把屏幕宽度赋值到   screenWidth里

在   mypage.aspx   文件里

<itemtemplate>
<asp:label   id= 'col1 '   text= 'something '>
<asp:label   id= 'col2 '   text= 'something2 '>
...
<%   if   screenWidth   >   1000   %>
<asp:label   id= 'col6 '   text= 'something6 '>
...
<asp:label   id= 'col10 '   text= 'something10 '>
<%   end   if   %>

</itemtemplate>


我希望达到上述假想代码(实际不能编译)的效果。有什么高招吗?


------解决方案--------------------
考虑到性能,比如对于 800×600 的分辩率,就不需要执行绑定额外的五个字段,

需稍微复杂的代码,

<itemtemplate>
<%# GetBindDataItem(Container.DataItem, scrennWidth) %>
<itemtemplate>

protected string GetBindDataItem(object dataItem, int screenWith) // 是一个自定义的方法
{
// 编程代码绑定方式
// object val1 = System.Web.UI.DataBinder.Eval(dataItem, "MyFieldName1 ");
// object val2 = System.Web.UI.DataBinder.Eval(dataItem, "MyFieldName1 ");
// ...
// return " " + val1 + val2 + ...

}