仅当SQLDataSource有行时如何显示元素

时间:2010-10-08 09:12:29

标签: c# asp.net sqldatasource

我正在创建一个ASP.NET / C#页面,用户在页面顶部输入ID,当他们按提交时,页面会回发并显示数据。现在,数据字段始终显示 - 即使页面加载且未进行任何搜索。这并不理想,因为当他们使用我制作的MultiView导航菜单时,会出现一些错误。此外,这显然不是一种好的做法。

如果SQLDataSource为空,有没有办法可以隐藏所有这些元素(它们是DetailsViews和GridViews,还有MultiView和Menu)?因此,如果搜索返回也没有结果,或者尚未执行任何查询。

由于

3 个答案:

答案 0 :(得分:2)

您可以将这些元素包围为占位符控件,然后根据是否显示结果来设置占位符可见性。
我之前没有使用SqlDataSource对象,但为了满足您的要求,我建议检查页面是否已在PageLoad方法中回发,如果没有隐藏数据控件。然后处理没有返回结果的情况,向SqlDataSource.Selected事件添加一个方法:
ASPX:

<asp:PlaceHolder ID="myPlaceholder" runat="server">
     ....Data controlds
</asp:PlaceHolder>

代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    if(!isPostBack)
    {     
        myPlaceholder.Visible = false;
    }
}

protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
    myPlaceholder.Visible = e.AffectedRows > 0;
}

答案 1 :(得分:1)

If GridView1.Rows.Count > 0 // then do stuff

答案 2 :(得分:0)

DataView dv = (DataView)SqlDSourse.Select(DataSourceSelectArguments.Empty);

if(dv.count>0)

    {
     ...
    }