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

标签 c# asp.net sqldatasource

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

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

谢谢

最佳答案

您可以用占位符控件包围这些元素,然后根据是否有要显示的结果设置占位符的可见性。
我以前没有使用过 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;
}

关于c# - 如何仅在 SQLDataSource 有行时显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889163/

相关文章:

javascript - 在文本框上显示搜索没有记录消息

javascript - 在新窗口中显示 View

c# - ASP.NET SqlDataSource Gridview 问题

c# - 在 Entity Framework 中映射连接表

c# - 子报表 RDLC 数据检索失败

c# - 在 Gridview 中显示逗号分隔值

.net - 运行MySql查询后出现缺少参数错误

asp.net - FilterExpression 搜索栏 - 多种数据类型(int 和 varchar)

c# - 将整数添加到名称中

c# - 如何使用自定义时间将 datetimepicker 设置为星期一?