我有一个 Gridview,其数据源是 EntityDataSource。AllowPaging 设置为 true(参见代码)。在页面上还有一个 DropDownList。当页面最初加载时,网格会填充相关数据源中的所有数据 [未过滤]。当/如果用户从 DropDownList 中选择一个项目,Gridview 中的数据会被相应地过滤。
问题是当我从新过滤的列表中选择一个页面时,过滤器会以某种方式被带走,所以我没有获取过滤列表的下一页,而是获取所有数据的下一页。我该如何纠正?
------开放网格声明--
<asp:GridView ID="gvAthleteInfo" runat="server" DataKeyNames="AthleteUid" DataSourceID="dsAthleteInfo"
HeaderStyle-CssClass="dl-grid-heading" AutoGenerateColumns="false" OnRowCommand="gvAthleteInfo_RowCommand"
AllowPaging="true" AllowSorting="true">
.
.
.
</asp:GridView>
---------绑定到网格的数据源----------
<asp:EntityDataSource ID="dsAthleteInfo" runat="server" ConnectionString="name=MBSCEntities"
DefaultContainerName="MBSCEntities"
EnableFlattening="False" EntitySetName="utathleteinfoes" AutoPage="true">
</asp:EntityDataSource>
-----------改变DropDownList选择时对网格数据的“过滤”-----
protected void ddlTeams_IndexChanged(object sender, EventArgs e)
{
if (ddlTeams.SelectedIndex > 0)
dsAthleteInfo.Where = "it.SportUid = " + ddlTeams.SelectedIndex.ToString();
else
dsAthleteInfo.Where = "it.SportUid >= 0";
dsAthleteInfo.DataBind();
}