Features

Paging

Paging

This sample shows how to implement paged views with the MultiRow.All the work is done by the CollectionView class used as a data source for the grid.To enable paging, set the PageSize property of MultiRow or CollectionViewService.To switch pages, use the Pager control and set Pager.Owner property to the id of MultiRow or CollectionViewService.

Features

Ordered
Shipped
City
State
Zip
Express
0
Joe Adams
Speedy Express
$2,037.00
8875 White St.
519-1647
11/24/2021
11/27/2021
Cairo
SC
65525-177
1
Sue White
Logitrax
$720.00
4579 Smith St.
603-6024
7/11/2025
7/15/2025
Cairo
CS
35812-769
2
Mark Richards
Speedy Express
$468.00
2771 Bannon St.
124-2698
2/23/2023
2/24/2023
York
SC
29876-632
3
Sue White
Speedy Express
$1,386.00
3183 Adams St.
817-3523
3/21/2019
3/22/2019
Sidney
RT
10910-910
4
Tom Johnson
Logitrax
$1,612.00
1244 Adams St.
623-3680
2/25/2018
2/27/2018
Rome
CS
66235-824
5
Sue Richards
Flash Delivery
$4,422.00
2967 Johnson St.
564-1871
1/7/2019
1/9/2019
Paris
RS
40841-283
6
Tom Peters
Flash Delivery
$3,703.00
8716 Wong St.
917-5388
11/6/2018
11/9/2018
Cairo
SP
80411-911
7
Tom Adams
Speedy Express
$4,736.00
4863 Adams St.
368-5821
4/18/2022
4/19/2022
Cairo
RS
10475-100
8
Aaron Bannon
Speedy Express
$3,420.00
1414 White St.
216-4876
11/8/2017
11/11/2017
York
RT
60031-327
9
Paul Johnson
Flash Delivery
$4,560.00
8019 Adams St.
466-6690
4/25/2020
4/27/2020
Rome
RN
27518-302

Settings

Description

This sample shows how to implement paged views with the MultiRow.
All the work is done by the CollectionView class used as a data source for the grid.
To enable paging, set the PageSize property of MultiRow or CollectionViewService.
To switch pages, use the Pager control and set Pager.Owner property to the id of MultiRow or CollectionViewService.

In this example, the paging happens server-side. This is because CollectionView here acts like a service and synchronizes with server data. The CollectionView internally does an ajax call to fetch next set of data. Refer @Html.ActionLink("Disable Server Reading", "DisableServerRead") sample for client-side paging.

Note: That the paging UI is implemented outside of the grid. This gives you complete control over the appearance and functionality of the paging mechanism.
To customize the Pager by Javascript, please refer the client CollectionView class.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System.Collections.Generic;
using C1.Web.Mvc;
using C1.Web.Mvc.Serialization;
using Microsoft.AspNetCore.Mvc;
using MultiRowExplorer.Models;
using Microsoft.AspNetCore.Http;
  
namespace MultiRowExplorer.Controllers
{
    public partial class MultiRowController : Controller
    {
        private readonly ControlOptions _pagingOptions = new ControlOptions
        {
            Options = new OptionDictionary
            {
                {"Page Size", new OptionItem {Values = new List<string> {"10", "25", "50", "100"}, CurrentValue = "10"}},
            }
        };
  
        public ActionResult Paging(IFormCollection data)
        {
            _pagingOptions.LoadPostData(data);
            ViewBag.DemoOptions = _pagingOptions;
            return View();
        }
  
  
        public ActionResult Paging_Bind([C1JsonRequest] CollectionViewRequest<Orders.Order> requestData)
        {
            return this.C1Json(CollectionViewHelper.Read(requestData, Orders.GetOrders()));
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
@model IEnumerable<Orders.Order>
@{
    var cities = Orders.GetCities().ToValues();
    ControlOptions optionsModel = ViewBag.DemoOptions;
    ViewBag.DemoSettings = true;
}
  
@section Styles{
    <style>
        .customMultiRow {
            margin-top: 5px;
        }
    </style>
}
  
<c1-items-source id="collectionViewService" read-action-url="@Url.Action("Paging_Bind")" page-size="@Convert.ToInt32(optionsModel.Options["pageSize"].CurrentValue)"></c1-items-source>
  
<c1-pager owner="collectionViewService"></c1-pager>
  
<c1-multi-row id="pagingMultiRow" class="multirow customMultiRow" is-read-only="true" items-source-id="collectionViewService">
    <c1-multi-row-cell-group header="Order" colspan="2">
        <c1-multi-row-cell binding="Id" header="ID" class="id" colspan="2" />
        <c1-multi-row-cell binding="Amount" header="Amount" format="c" class="amount" colspan="2" />
        <c1-multi-row-cell binding="Date" header="Ordered" />
        <c1-multi-row-cell binding="ShippedDate" header="Shipped" />
    </c1-multi-row-cell-group>
    <c1-multi-row-cell-group header="Customer" colspan="3">
        <c1-multi-row-cell binding="Customer.Name" name="CustomerName" header="Customer" />
        <c1-multi-row-cell binding="Customer.Email" name="CustomerEmail" header="Customer Email" class="email" colspan="2" />
        <c1-multi-row-cell binding="Customer.Address" name="CustomerAddress" header="Address" colspan="2" />
        <c1-multi-row-cell binding="Customer.Phone" name="CustomerPhone" header="Customer Phone" />
        <c1-multi-row-cell binding="Customer.City" name="CustomerCity" header="City" datamap-editor="@C1.Web.Mvc.Grid.DataMapEditor.DropDownList">
            <c1-data-map display-member-path="Value" selected-value-path="Value">
                <c1-items-source source-collection="cities" />
            </c1-data-map>
        </c1-multi-row-cell>
        <c1-multi-row-cell binding="Customer.State" name="CustomerState" header="State" />
        <c1-multi-row-cell binding="Customer.Zip" name="CustomerZip" header="Zip" />
    </c1-multi-row-cell-group>
    <c1-multi-row-cell-group header="Shipper">
        <c1-multi-row-cell binding="Shipper.Name" name="ShipperName" header="Shipper" width="*" />
        <c1-multi-row-cell binding="Shipper.Email" name="ShipperEmail" header="Shipper Email" class="email" />
        <c1-multi-row-cell binding="Shipper.Express" name="ShipperExpress" header="Express" />
    </c1-multi-row-cell-group>
</c1-multi-row>
  
<c1-pager owner="pagingMultiRow"></c1-pager>
  
@section Settings{
    @Html.Partial("_OptionsMenu", optionsModel)
}
  
@section Description{
<p>@Html.Raw(MultiRowRes.Paging_Text0)</p>
  
<p>@Html.Raw(MultiRowRes.Paging_Text1)</p>
  
<p>@Html.Raw(MultiRowRes.Paging_Text2)</p>
  
}