データソースが EntityDataSource である Gridview があります。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();
}