Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅在SQLDataSource有行时显示元素_C#_Asp.net_Sqldatasource - Fatal编程技术网

C# 如何仅在SQLDataSource有行时显示元素

C# 如何仅在SQLDataSource有行时显示元素,c#,asp.net,sqldatasource,C#,Asp.net,Sqldatasource,我正在创建一个ASP.NET/C页面,用户在页面顶部输入一个ID,当他们按Submit时,页面会发回并显示数据。现在,数据字段始终显示在屏幕上,即使页面已加载且未进行搜索。这并不理想,因为当他们使用我制作的多视图浏览菜单时,会出现一些错误。而且这显然不是一个好的练习 如果SQLDataSource为空,是否有办法隐藏所有这些元素(它们是DetailsView和GridView,以及MultiView和菜单)?因此,如果搜索返回nor esults,或者还没有执行任何查询 谢谢您可以使用占位符控件

我正在创建一个ASP.NET/C页面,用户在页面顶部输入一个ID,当他们按Submit时,页面会发回并显示数据。现在,数据字段始终显示在屏幕上,即使页面已加载且未进行搜索。这并不理想,因为当他们使用我制作的多视图浏览菜单时,会出现一些错误。而且这显然不是一个好的练习

如果SQLDataSource为空,是否有办法隐藏所有这些元素(它们是DetailsView和GridView,以及MultiView和菜单)?因此,如果搜索返回nor esults,或者还没有执行任何查询


谢谢

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


干杯,伙计,它不允许我在SqlDataSource1上使用长度参数。另外,Page_Load方法中是否有隐藏的代码?@Chris-不太使用SqlDataSource对象,但我所做的编辑应该会让您上路。
<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;
}
If GridView1.Rows.Count > 0 // then do stuff
DataView dv = (DataView)SqlDSourse.Select(DataSourceSelectArguments.Empty);

if(dv.count>0)

    {
     ...
    }