当 GridView 为空时隐藏面板
Hide a Panel when GridView is empty
我在面板内有一个 GridView,我想在子项为空时隐藏它,因为目前仍然是一个带有 legend
文本的 fieldset
,里面什么也没有。
我已经尝试在 Page_Load
事件中添加类似 Panel.Visible = GridView.Rows.Count > 0
的内容,但效果不佳。
如何获得我需要的结果?
谢谢
更多细节:
如果第一次加载数据库 table 是空的,我没有看到 fieldset
,当我添加一行时,带有 GridView 的面板不会出现;如果在第一次加载时我有一行,我可以看到带有 GridView 的面板,当我删除唯一行时,任何东西都会消失,但即使我插入新行也永远不会回来。我认为 Page_Load 不是正确的事件。
如果您只想让您的面板 visible/invisible 基于 Gridview 行,那么就这么简单:
if(GridView.Rows.Count > 0)
PanelId.Visible = true;
else
PanelId.Visible = false;
但请确保在调用 Gridview 绑定函数后执行此代码。
希望对您有所帮助。
试试这个..
Panel.Visible = (GridView.Rows.Count > 0?false:true);
请尝试以下步骤:
- 在延迟页面事件中检查
Panel.Visible = GridView.Rows.Count > 0
,例如 Page_PreRender
- 在 GridView 中添加
OnRowDeleted
事件并检查 Panel.Visible = GridView.Rows.Count > 0
删除的行是否是最后一行。同时将 GridView 重新绑定为 GridView.DataBind()
- 在 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;
}
希望这能解决您的问题。
最后我发现了我的问题...
我已经将用于插入的 FormView 和 GridView 放在不同的 UpdatePanel 中,因此将所有内容统一在同一个 UpdatePanel 中并使用此代码:
Panel.Visible = GridView.Rows.Count > 0;
在 GridView DataBound 事件中,它起作用了。
谢谢大家
我在面板内有一个 GridView,我想在子项为空时隐藏它,因为目前仍然是一个带有 legend
文本的 fieldset
,里面什么也没有。
我已经尝试在 Page_Load
事件中添加类似 Panel.Visible = GridView.Rows.Count > 0
的内容,但效果不佳。
如何获得我需要的结果?
谢谢
更多细节:
如果第一次加载数据库 table 是空的,我没有看到 fieldset
,当我添加一行时,带有 GridView 的面板不会出现;如果在第一次加载时我有一行,我可以看到带有 GridView 的面板,当我删除唯一行时,任何东西都会消失,但即使我插入新行也永远不会回来。我认为 Page_Load 不是正确的事件。
如果您只想让您的面板 visible/invisible 基于 Gridview 行,那么就这么简单:
if(GridView.Rows.Count > 0)
PanelId.Visible = true;
else
PanelId.Visible = false;
但请确保在调用 Gridview 绑定函数后执行此代码。
希望对您有所帮助。
试试这个..
Panel.Visible = (GridView.Rows.Count > 0?false:true);
请尝试以下步骤:
- 在延迟页面事件中检查
Panel.Visible = GridView.Rows.Count > 0
,例如Page_PreRender
- 在 GridView 中添加
OnRowDeleted
事件并检查Panel.Visible = GridView.Rows.Count > 0
删除的行是否是最后一行。同时将 GridView 重新绑定为GridView.DataBind()
- 在 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;
}
希望这能解决您的问题。
最后我发现了我的问题... 我已经将用于插入的 FormView 和 GridView 放在不同的 UpdatePanel 中,因此将所有内容统一在同一个 UpdatePanel 中并使用此代码:
Panel.Visible = GridView.Rows.Count > 0;
在 GridView DataBound 事件中,它起作用了。
谢谢大家