Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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# 如何使用gridview处理来自数据库的空返回?_C#_Sql_Gridview - Fatal编程技术网

C# 如何使用gridview处理来自数据库的空返回?

C# 如何使用gridview处理来自数据库的空返回?,c#,sql,gridview,C#,Sql,Gridview,我有一个绑定到ObjectDataSource的gridview,它从数据库检索记录以显示在gridview中。返回记录的过程接收搜索字符串并显示相关结果。但是,当数据库没有结果时,我会得到一个底部带有页码的空gridview,好像它返回了数据库中的所有记录,如下图所示: 我已经设置了EmptyDataText和EmptyDataTemplate属性,但在没有结果时它们不会显示 有人知道这是怎么回事吗 以下是ObjectDataSource和GridView的asp: <asp:Obje

我有一个绑定到ObjectDataSource的gridview,它从数据库检索记录以显示在gridview中。返回记录的过程接收搜索字符串并显示相关结果。但是,当数据库没有结果时,我会得到一个底部带有页码的空gridview,好像它返回了数据库中的所有记录,如下图所示:

我已经设置了EmptyDataText和EmptyDataTemplate属性,但在没有结果时它们不会显示

有人知道这是怎么回事吗

以下是ObjectDataSource和GridView的asp:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnablePaging="True" SelectCountMethod="GetUsersCount"
        SelectMethod="GetUsers" SortParameterName="sortColumn" TypeName="WebsiteBuilder.Core.UUser"
        OnSelecting="ObjectDataSource1_Selecting">
        <SelectParameters>
            <asp:Parameter Name="searchExpression" Type="String" DefaultValue="" />
        </SelectParameters>
    </asp:ObjectDataSource>

<asp:GridView ID="grdUsers" runat="server" CssClass="grdUsers" AutoGenerateColumns="false"
        OnDataBound="grdUsers_DataBound" DataSourceID="ObjectDataSource1" AllowPaging="true"
        AllowSorting="true" OnRowCommand="grdUsers_RowCommand" PageSize="5" EmptyDataText="No Results">
        <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast"
            PageButtonCount="5" Position="Bottom" />
        <PagerStyle CssClass="pagination" HorizontalAlign="Center" VerticalAlign="Middle" />
        <EmptyDataTemplate>No Results</EmptyDataTemplate>`
以及获取数据的代码:

            cmd.AddParameter("searchExpression", searchExpression);
            cmd.AddParameter("sortExpression", sortColumn);
            cmd.AddParameter("startRowIndex", startRowIndex);
            cmd.AddParameter("maximumRows", maximumRows);

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);

            DataTable dt = ds.Tables[0];

            int i = dt.Rows.Count;

            return ds.Tables[0];

当我签入调试时,值为0。我的问题是为什么gridview不显示EmptyDataTemplate,为什么它在没有行的情况下仍显示多个页码。

我只需将空结果集绑定到gridview,然后使用OnDataBound事件执行适当的逻辑,即隐藏gridview,显示“无结果”标签,等等。

就个人而言,如果数据源为null或空,我甚至不会将其绑定到网格。

您能告诉我们将数据绑定到gridview的方法吗?除了Davide的注释外,您是否执行了该过程并确定没有返回任何内容?是的,我对返回的行进行了计数,结果是0。另外,我刚刚在debug中运行了它,并检查了网格的pagecount属性,它被设置为0,就像我期望的那样。我将编辑问题以显示绑定。您是否也可以添加grdUsers_数据绑定和ObjectDataSource1_选择代码?标题是如何生成的?我希望标题不会被视为一行,因此datagrid不是空的。
            cmd.AddParameter("searchExpression", searchExpression);
            cmd.AddParameter("sortExpression", sortColumn);
            cmd.AddParameter("startRowIndex", startRowIndex);
            cmd.AddParameter("maximumRows", maximumRows);

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);

            DataTable dt = ds.Tables[0];

            int i = dt.Rows.Count;

            return ds.Tables[0];