【问题标题】:Hide a Panel when GridView is emptyGridView 为空时隐藏面板
【发布时间】:2015-06-12 08:54:57
【问题描述】:

我在 Panel 中有一个 GridView,当孩子为空时我想隐藏它,因为目前仍然是一个带有 legend 文本的 fieldset,里面什么都没有。

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

我怎样才能得到我需要的结果?

谢谢

更多细节:

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

【问题讨论】:

  • 您能否分享您的 Page_Load() 事件和您的问题?

标签: c# asp.net gridview panel


【解决方案1】:

试试这个..

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

【讨论】:

  • 用冒号:代替分号;
  • 请检查已编辑的答案..!!
  • 你好,我已经尝试过这段代码,我得到的结果总是相同:如果第一次加载数据库表是空的,我看不到fieldset,当我添加一行时不显示带有 GridView 的面板;如果在第一次加载时我有一行,我可以看到带有 GridView 的面板,当我删除唯一行时,任何东西都会消失,但即使我插入新行也永远不会回来。我认为 Page_Load 不是正确的事件。
【解决方案2】:

请尝试以下步骤:

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

代码:

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;
}

希望这能解决您的问题。

【讨论】:

    【解决方案3】:

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

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

    在 GridView DataBound 事件中,它起作用了。

    谢谢大家。

    【讨论】:

    • 感谢您没有像其他一些答案那样使用布尔响应来识别硬编码的真/假。
    【解决方案4】:

    如果您只是想让您的面板基于 Gridview Rows 可见/不可见,那么它就这么简单:

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

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

    希望这会有所帮助。

    【讨论】:

    • 这正是他已经写的,只是以更广泛的方式
    • 您好,GridView 是由 ObjectDataSource 绑定的,后面没有任何代码,所以我不知道绑定后如何放置。谢谢
    • 删除或添加一行后,您必须确保再次检查条件。 Page_Load 会起作用。只需检查您在回发时的状况并重新绑定 GridView 以更新行状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多