我在Panel中设置了一个GridView,我想在孩子空的时候隐藏它,因为目前仍然是fieldset
文本,而legend
文本内部没有任何内容。
我已经尝试在Panel.Visible = GridView.Rows.Count > 0
事件中添加Page_Load
之类的内容,但效果不佳。
如何获得我需要的结果?
谢谢
更多细节:
如果在第一次加载时数据库表为空,我看不到fieldset
,当我添加一行时,GridView没有出现;如果第一次加载我有一行我可以看到Panel与GridView,当我删除唯一行任何disapears但即使我插入一个新行也永远不会回来。我认为Page_Load不是正确的事件。
答案 0 :(得分:2)
试试这个..
<强> Panel.Visible = (GridView.Rows.Count > 0?false:true);
强>
答案 1 :(得分:1)
请尝试以下步骤:
Panel.Visible = GridView.Rows.Count > 0
Page_PreRender
OnRowDeleted
事件,如果删除的行是最后一行,则检查Panel.Visible = GridView.Rows.Count > 0
。还将GridView重新绑定为GridView.DataBind()
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;
}
我希望这能解决你的问题。
答案 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绑定函数后执行此代码。
希望这有帮助。