0

私は telerik radgrid を使用しており、サーバー側のページングを実行したいと考えています。私はこのデモをテレリックによって参照しています。

これを処理するためにグリッドがどのように構成されているかを示すコードを次に示します。

 <telerik:RadGrid ID="radGridMyWorksheet" AllowMultiColumnSorting="true" runat="server" AutoGenerateColumns="false" ShowStatusBar="True"
        AllowSorting="True" ClientSettings-Scrolling-EnableVirtualScrollPaging="false"
        ClientSettings-Scrolling-AllowScroll="false" AllowCustomPaging="true"
        OnNeedDataSource="radGridMyWorksheet_NeedDataSource" AllowFilteringByColumn="True" OnGroupsChanging="radGridMyWorksheet_GroupsChanging"
        EnableLinqExpressions="false"
        OnItemDataBound="radGridMyWorksheety_ItemDataBound" OnInsertCommand="radGridMyWorksheet_InsertCommand">            
        <MasterTableView DataKeyNames="ID" AllowMultiColumnSorting="true"
            Width="100%" CommandItemDisplay="Top" Name="radGridMyWorksheet" AllowPaging="true">
            <AlternatingItemStyle BackColor="WhiteSmoke" />

これがグリッドビューにデータを提供する私のコードです。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            radGridMyWorksheet.VirtualItemCount = calling method that returns total record count
        }
    }


protected void radGridMyWorksheet_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        try
        {

            List<Expression<Func<RouteWorksheet, object>>> include = new List<Expression<Func<RouteWorksheet, object>>>();
            Expression<Func<RouteWorksheet, object>> routeInclude = (route) => route.Route;
            include.Add(routeInclude);

            int CurrentPageIndex = radGridMyWorksheet.CurrentPageIndex == 0 ? 1 : radGridMyWorksheet.CurrentPageIndex;
            int startRowIndex = (ShouldApplySortFilterOrGroup()) ?
                1 : CurrentPageIndex * radGridMyWorksheet.PageSize;

            int maximumRows = (ShouldApplySortFilterOrGroup()) ?
                radGridMyWorksheet.VirtualItemCount : radGridMyWorksheet.PageSize;

            radGridMyWorksheet.AllowCustomPaging = !ShouldApplySortFilterOrGroup();

            var routeWorksheet = Repository<RouteWorksheet>.GetEntityListForQuery(r => routeIDs.Contains(r.RouteID) && r.IsDeleted == false
                , x => x.OrderByDescending(y => y.RouteDate), include,
                startRowIndex, maximumRows);

            radGridMyWorksheet.DataSource = routeWorksheet;
        }
        catch (Exception ex)
        {
            Utility.WalkException(this.Master, ex, "There was an error while processing the myworksheets record.");
        }
    }


 public bool ShouldApplySortFilterOrGroup()
    {
        return radGridMyWorksheet.MasterTableView.FilterExpression != "" ||
            (radGridMyWorksheet.MasterTableView.GroupByExpressions.Count > 0 || isGrouping) ||
            radGridMyWorksheet.MasterTableView.SortExpressions.Count > 0;
    }

ここでは、カスタム ページングが正常に機能しています。しかし、フィルターと並べ替えが機能していません。ここで私が間違っていることを誰でも指摘できますか?

4

2 に答える 2

0

フィルタリングと並べ替えでカスタム ページングを使用する場合は、フィルター (または並べ替え式) が適用されているときにカスタム ページングを無効にする必要があり、データ セット全体を RadGrid の DataSource に提供する必要があるため、内部ページングを適用できます。あなたが参照しているデモのような機能。

于 2015-06-09T15:03:24.540 に答える