1

データソースが 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();
}
4

0 に答える 0