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