【发布时间】:2011-03-09 12:28:27
【问题描述】:
我有一个绑定到 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 以及为什么在没有行时它仍然显示多个页码。
【问题讨论】:
-
你能告诉我们你用来将数据绑定到gridview的方法吗?
-
除了 Davide 的评论之外,您是否执行了该程序并确定确实没有返回任何内容?
-
是的,我计算了返回的行数,它是 0。我刚刚在调试中运行它并检查了网格的页数属性,它设置为 0,就像我期望的那样它是。我将编辑问题以显示绑定。
-
能否也添加grdUsers_DataBound和ObjectDataSource1_Selecting代码?
-
标题是如何生成的?我希望标题不被视为一行,因此数据网格不为空。