【问题标题】:How to display elements only if SQLDataSource has rows仅当 SQLDataSource 有行时如何显示元素
【发布时间】:2010-10-08 09:12:28
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: c# asp.net sqldatasource


    【解决方案1】:

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

    【讨论】:

    • 干杯哥们,它不允许我在 SqlDataSource1 上使用长度参数。另外,后面的代码是在Page_Load方法中吗?
    • @Chris - 没有太多使用 SqlDataSource 对象,但我所做的编辑应该可以帮助您。
    【解决方案2】:
    If GridView1.Rows.Count > 0 // then do stuff
    

    【讨论】:

      【解决方案3】:
      DataView dv = (DataView)SqlDSourse.Select(DataSourceSelectArguments.Empty);
      
      if(dv.count>0)
      
          {
           ...
          }
      

      【讨论】:

        猜你喜欢
        • 2021-10-03
        • 1970-01-01
        • 2019-08-11
        • 2021-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        相关资源
        最近更新 更多