刚发了一个帖子,大家都跑题了,回答的乱七八糟,而且还是一些菜鸟才回答,简直让人气愤。  http://topic.csdn.net/u/20080808/10/0a4f88c4-f2d9-467b-98ce-a4d1823a89e5.html大家试过了再来回答我的问题,50分只给回答正确的人,其他的一律不给分。问题是这样的,我这会换asp:Panel控件,我问的问题是Visible属性,请不要回答和css有关的问题
<body style="border:5px solid #eaeaea; margin:0;">
<asp:Panel runat="server" Visible="<%# IsGroup() %>">
xxxxxxxxxx | <%= IsGroup() %>
</asp:Panel>public bool IsGroup()
        {
            return false;
        }
为什么上例中Panel没有办法隐藏,没有隐藏的原因是什么。

解决方案 »

  1.   

    如果用了 <%# %>这样的语法,需要明确调用DataBind()后才能进行数据绑定
      

  2.   


    <asp:Panel runat="server" <% IsGroup() %>>
    </asp:Panel>IsGroup="Visible=\"false\";"
      

  3.   

    不好意思. C#的代码 ;打错了.IsGroup="Visible=\"false\"";
      

  4.   

    <%# %>是用在数据绑定控件中的吧,如GridView,DataList.
    如果不是绑定,应该用<%= %>,
    LZ查查两个的区别.
      

  5.   

    <asp:Panel runat="server" Visible="<%=IsGroup() %>">
      

  6.   

    楼主,问一下你只是为了,让这个panel 隐藏吗? 因为,<% %>这种只能对非runat="server"的控件有效.然后就是
    DataBind()  对<%# %>了;如果你只是为了, 让这个panel隐藏,那么,<%IsGroup %> 这个东西,你完全可以在后台
    写一个HTML 就OK了.
      

  7.   

    chinawes 我拜托你也试试,你用<%= %>输出一下不就知道答案了吗?
      

  8.   

    告诉你原因因为 前台执行 IsGroup() 这种后台方法的时候页面已经保存状态了最后才执行方法 这个你更新的值 你看起来更新了  实际没有被保存要不你用个加载事件之类的 东西 处理吧 :)
      

  9.   

    LZ在你的PageLoad里加一下Panel1.DataBind();就可以实现你想要大效果了.
      

  10.   

    非常感谢 amandag ,结贴咯!
      

  11.   

    经过我的测试 我想到一个问题 就是 你如果想要进行判断的话  想隐藏Panel  直接写   this.Panel .Visible="false"  就好了  而写一个方法  判断 在加载的时候 根本不能进到这个方法里    我测试就是这样!  你如果这个控件在是  datalist  或dataView 等控件里  就能进到这个方法里!
      

  12.   

    如果用了 <%# %>这样的语法,需要明确调用DataBind()后才能进行数据绑定 很明显,一楼的答案是正确的,因为我试过!(LZ,我试过的,可以在这里发表吧,虽然我是菜鸟)
      

  13.   

    1楼太牛逼了.就是需要在Page_Load中加入this.Panel1.DataBind();
      

  14.   

    分重点只给最先回答正确的朋友,chinawes 不要太在意了,只要解决问题给分是不手软的。
      

  15.   

    chinawes 你误解我的意思了,我指的菜鸟是指自己都不去试就胡乱的给一通代码,这是我不能接受的。