我有一个绑定(bind)到 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>`
这里是选择事件的代码:
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
if (!String.IsNullOrEmpty(this.txtSearchBox.Text))
{
e.InputParameters["searchExpression"] = "%" + this.txtSearchBox.Text + "%";
}
else return;
}
以及获取数据的代码:
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];
当我在调试中检查 i 时,值是 0。我的问题是为什么 gridview 没有显示 EmptyDataTemplate 以及为什么它在没有行时仍然显示多个页码。
最佳答案
我只是将空结果集绑定(bind)到 GridView,然后使用 OnDataBound 事件执行适当的逻辑,即隐藏 GridView、显示“无结果”标签等。
关于c# - 如何使用 gridview 处理数据库的空返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245775/