0

ObjectDataSource1 にバインドされている asp.net グリッド ビューがあり、この ObjectdataSource1 は WCF サービス メソッドにバインドされています。私はasp.netが初めてです。問題は、列ごとの並べ替えを適用する必要があることです。しかし、それができません。C# VS2010 を使用すると [並べ替えを有効にする] チェックボックスが表示されない

4

1 に答える 1

1

私は次のように並べ替えを使用します。

<asp:GridView ID="GridView1" DataSourceID="ObjectDataSource1" runat="server" AutoGenerateColumns="False"  AllowSorting="true" >
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
            <asp:BoundField DataField="TelephoneNo" HeaderText=" Phone" SortExpression="TelephoneNo" />
            <asp:BoundField DataField="RequestTypeName" HeaderText="Type" SortExpression="RequestTypeName" />
            <asp:BoundField DataField="CenterName" HeaderText="Center" SortExpression="CenterName" />
        </Columns>
    </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="Data.RequestDB" SelectMethod="SearchRequests" SelectCountMethod="SearchRequestsCount" OnSelecting="ObjectDataSource1_Selecting" SortParameterName="sortParameter" >
        <SelectParameters>
            <asp:Parameter Name="id" Type="String" />
            <asp:Parameter Name="telephoneNo" Type="String" />
        </SelectParameters>
    </asp:ObjectDataSource>

およびdbメソッド:

public static List<Request> SearchRequests(string id, string telephoneNo, string sortParameter = null)
    {
        using (MainDataContext context = new MainDataContext())
        {
            var query = context.Requests
                .Where(t => (string.IsNullOrWhiteSpace(id) || t.ID.ToString().Contains(id)) &&
                            (string.IsNullOrWhiteSpace(telephoneNo) || t.TelephoneNo.ToString().Contains(telephoneNo))));

            if (string.IsNullOrEmpty(sortParameter))
                return query.OrderByDescending(t => t.ID).ThenByDescending(t => t.StatusName)
                    .ToList();

            return query.OrderBy(sortParameter)
                    .ToList();
        }
    }

お役に立てば幸いです

于 2013-11-05T07:46:45.637 に答える