<asp:Panel Visible='<%# (Container.DataItem as HatchBindData).Event == null%>'>
 <div>
 <asp:LinkButton ID="btnHatch" runat="server" CssClass="hatchbtn1" 
    index='<%# (Container.DataItem as HatchBindData).Event.Index%>'></asp:LinkButton>
 </div>
 </asp:Panel>
上面的代码是在一个Repeater控件里的,当事件不存在的时候,隐藏一个LinkButton。
不过在代码执行的时候抛出一个空异常,因为在生成页面时,虽然Visible设置为false,但下面的代码仍然会被执行。
有没有办法让下面的代码在条件成立的时候才执行。

解决方案 »

  1.   

    把这个控件放到div层上,如果条件成立就用js调用这个层,显示这个控件,否则,不显示层,隐藏控件
      

  2.   

    不是显示问题,而是代码在绑定时,想忽略代码的执行,因为(Container.DataItem as HatchBindData).Event 在绑定时可能是Null值。
      

  3.   

    你在执行的时候,判断这个NULL值就可以了。
      

  4.   

    如果只是例子上只有一行,到还好做Null判断,问题是实际情况绑定的数据不只一行,而且加Null判断会让代码急剧膨胀,实际的情况的判断是3个条件都满足时才显示。