GridView为空时隐藏Panel

时间:2015-06-12 08:54:57

标签: c# asp.net gridview panel

我在Panel中设置了一个GridView,我想在孩子空的时候隐藏它,因为目前仍然是fieldset文本,而legend文本内部没有任何内容。

我已经尝试在Panel.Visible = GridView.Rows.Count > 0事件中添加Page_Load之类的内容,但效果不佳。

如何获得我需要的结果?

谢谢

更多细节:

如果在第一次加载时数据库表为空,我看不到fieldset,当我添加一行时,GridView没有出现;如果第一次加载我有一行我可以看到Panel与GridView,当我删除唯一行任何disapears但即使我插入一个新行也永远不会回来。我认为Page_Load不是正确的事件。

4 个答案:

答案 0 :(得分:2)

试试这个..

<强> Panel.Visible = (GridView.Rows.Count > 0?false:true);

答案 1 :(得分:1)

请尝试以下步骤:

  1. Panel.Visible = GridView.Rows.Count > 0
  2. 等较晚页面事件中检查Page_PreRender
  3. 在GridView中添加OnRowDeleted事件,如果删除的行是最后一行,则检查Panel.Visible = GridView.Rows.Count > 0。还将GridView重新绑定为GridView.DataBind()
  4. 在GridView中添加OnRowCreated事件,并重复与删除行时相同的过程。
  5. 代码:

    protected void Page_PreRender(object sender, EventArgs e)
    {
        Panel.Visible = GridView.Rows.Count > 0;
    }
    
    protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)
    {
        GridView.DataBind();
        Panel.Visible = GridView.Rows.Count > 0;
    
    }
    protected void GridView_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
        GridView.DataBind();
        Panel.Visible = GridView.Rows.Count > 0;
    }
    

    我希望这能解决你的问题。

答案 2 :(得分:1)

最后我发现了我的问题...... 我将插入的FormView和GridView放在不同的UpdatePanel中,所以在同一个UpdatePanel中统一所有并使用了这段代码:

Panel.Visible = GridView.Rows.Count > 0;

在GridView DataBound事件中它起作用。

谢谢大家。

答案 3 :(得分:0)

如果您只是想根据Gridview Rows使您的面板可见/不可见,那么它就像这样简单:

if(GridView.Rows.Count > 0)
    PanelId.Visible = true;
else
    PanelId.Visible = false;

但是请确保在调用Gridview绑定函数后执行此代码。

希望这有帮助。