web-dev-qa-db-ja.com

剣道UI-グリッドの改ページ(サーバー側)

改ページでKendo-UIグリッドを使用しようとしています。 Total属性にはすべてが期待どおりに機能しているようですが、100に設定すると、ページサイズで設定している10アイテムのうち1〜10が表示されます。誰もがこれでより良い成功を収めましたか?私は剣道のドキュメントとフォーラムを検索しましたが、成功しませんでした。

@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
    foreach (System.Data.DataColumn column in Model.Columns)
    {
        columns.Bound(column.ColumnName);
    }
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Groupable()
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(10)
    .Total(100)
    .Model(model =>
        {
            foreach (System.Data.DataColumn column in Model.Columns)
            {
                model.Field(column.ColumnName, column.DataType);
            }                
        })
    .Read(read => read.Action("Read", "Controls"))
)

ありがとう

9
spooti

ドキュメントで説明されているようにserverPagingが有効な場合、スキーマで合計を指定する必要があり、その合計も返す必要がありますスキーマで指定されたこの場所でサーバーから応答を返すたび。

 dataSource: {
    serverPaging: true,
    schema: {
        data: "data",
        total: "total"
    },
  //...

同じことが議論されます ここ

次の を確認してください。

14
Petur Subev

右、あなたはあなたの応答で合計フィールドを渡す必要があります。

あなたの見解は次のようになります:

@(Html.Kendo().Grid<YourViewModel>()
      .Name("grid")
      .DataSource(dataSource => dataSource          
          .Ajax()
          .PageSize(20)
          .ServerOperation(true)
          .Read(read => read.Action("Data_Read", "YourController", new {Id=Model.CurrentId}))
       )
      .Columns(c =>
      {
          c.Bound(x => x.Name);
          c.Bound(x => x.CreatedTime);
      })
      .Pageable()
      .Sortable()
)

以下のアクションコード:

    public ActionResult Data_Read([DataSourceRequest]DataSourceRequest request, int Id)
        {
            int total = yourQuery.GetTotal(Id); 

            var returnViewModel = yourQuery.GetViewModels(Id, request.Page, request.PageSize);


            return Json(new
            {
                Data = returnViewModel,
                Total=total
            });
        }

Fiddlerで要求と応答を表示すると、魔法がどのように行われるかがわかります。要求:sort = SessionId-asc&page = 7&pageSize = 20&group =&filter =

これは、グリッドがコントローラーに渡すDataSourceRequest形式です。ページングに必要なパラメータがすでに含まれています。

アクションからの応答を表示すると、すべてのレコードを含むデータフィールドがあることがわかります。合計フィールドは、剣道グリッドのページングに必要なすべてのレコードの合計金額です。

8
Jim Yu

ASP.NET MVCにKendoラッパーを使用する場合は、以下を追加することを検討してください。

.EnableCustomBinding(true)

この article で説明されているように、カスタムバインディングにより、組み込みのページング/ソート機能をバイパスできます。このようにして、合計が考慮されます。

0
user870717

元の例によると、「合計」は自動的に認識されます。ページごとに100件の結果を表示する場合は、「ページサイズ」に設定します。

0
JBntis