0

ユーザーが GridView をその列のいずれかで並べ替えられるようにしようとしています。

<asp:GridView ID="gvShows" runat="server" DataKeyNames="dataSource,title" Caption="Show List" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True" CaptionAlign="Left" OnSorting="gvShows_Sorting" >
                    <RowStyle BorderColor="Black" />
                    <Columns> 
                        <asp:TemplateField HeaderText="Select"> 
                            <ItemTemplate> 
                                <asp:CheckBox ID="cbSelect" runat="server" AutoPostBack="false"/> 
                            </ItemTemplate> 
                        </asp:TemplateField> 
                        <asp:BoundField HeaderText="Data Source" DataField="dataSource" /> 
                        <asp:BoundField HeaderText="Show ID" DataField="ShowId" /> 
                        <asp:BoundField HeaderText="Show Title" DataField="title" /> 
                        <asp:BoundField HeaderText="Episode Id" DataField="EpisodeID" /> 
                        <asp:BoundField HeaderText="Episode Title" DataField="EpisodeTitle" /> 
                        <asp:BoundField HeaderText="Genre" DataField="Genre" /> 
                        <asp:BoundField HeaderText="Show Type Description" DataField="ShowTypeDescription" /> 
                        <asp:BoundField HeaderText="Director Name" DataField="DirectorName" /> 
                        <asp:BoundField HeaderText="Release Year" DataField="ReleaseYear" /> 
                        <asp:BoundField HeaderText="Season Episode" DataField="SeasonEpisode" /> 
                    </Columns>  
                </asp:GridView>

    protected void gvShows_Sorting(object sender, GridViewSortEventArgs e)
    {
        var dataTable = Session["shows"] as DataTable;

        if (dataTable != null)
        {
            var dataView = new DataView(dataTable)
                {
                    Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection)
                };

            gvShows.DataSource = dataView;
            gvShows.DataBind();
        }
    }

    private string ConvertSortDirection(SortDirection sortDirection)
    {
        string newSortDirection = String.Empty;

        switch (sortDirection)
        {
            case SortDirection.Ascending:
                newSortDirection = "ASC";
                break;

            case SortDirection.Descending:
                newSortDirection = "DESC";
                break;
        }

        return newSortDirection;
    }

GridView にデータが表示されている場合、データを並べ替えるためにヘッダー テキストをクリックすることはできません。

4

2 に答える 2

0

わかった。列が自動的に生成されないため、SortExpressions を追加する必要がありました。

于 2013-06-18T17:27:50.280 に答える