Helpex - Trao đổi & giúp đỡ Đăng nhập
4

Tôi có một MVC Kendo Grid như sau. Nó đang hoạt động tốt với phân trang mặc định.

Bây giờ, tôi muốn phân trang tùy chỉnh. Trong hành động của bộ điều khiển, chúng ta cần biết chỉ mục trang hiện tại. Ngoài ra, nó sẽ đặt số lượng "tổng" cho lưới. [Nguồn dữ liệu thực tế sẽ chỉ có 2 bản ghi tại một thời điểm ngay cả khi có 100 bản ghi trong cơ sở dữ liệu. Vì vậy, lưới phải biết tổng số bản ghi trong cơ sở dữ liệu bằng cách sử dụng thuộc tính "total".]

Truy vấn chỉ nên trả về 2 bản ghi từ cơ sở dữ liệu cùng một lúc.

Làm cách nào chúng ta có thể thực hiện phân trang máy chủ tùy chỉnh này bằng cách sử dụng trình bao bọc MVC cho Kendo Grid?

@using (Html.BeginForm())
{ 

    @(Html.Kendo().Grid<KendoUIMvcSample.Models.Sample>()    
    .Name("ssgrid222")
    .Columns(columns => {
        columns.Bound(p => p.SampleDescription).Filterable(false).Width(100);
        columns.Bound(p => p.SampleCode).Filterable(false).Width(100);
        columns.Bound(p => p.SampleItems).Filterable(false).Width(100);
    })
    .AutoBind(false)
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .HtmlAttributes(new { style = "height:430px;" })
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(2)
        .Read(read => read.Action("Orders_Read", "Sample")
)
     )
  )
}

Bộ điều khiển

public ActionResult Orders_Read([DataSourceRequest]DataSourceRequest request)
        {

            int currentPageNumber = request.Page;
            return Json(GetOrders().ToDataSourceResult(request));
        }
4 hữu ích 1 bình luận 23k xem chia sẻ
8

Nó được định nghĩa trong trang kiếm đạo

MÃ BỘ ĐIỀU KHIỂN

    //Paging and Sorting
    int currentPage = request.Page;
    int pageSize = request.PageSize;
    string sortDirection = "ASC";
    string sortField = "UpdatedDateTime";

    if (request.Sorts != null && request.Sorts.Count > 0)
    {
        sortField = request.Sorts[0].Member;
        sortDirection = request.Sorts[0].SortDirection.ToString();
    }

//Setting the TOTAL
var result = new DataSourceResult()
{
    Data = orders, 
    Total = total // Total number of records
};

return Json(result);

QUANG CẢNH

      <div class="GridSearch">

                @(Html.Kendo().Grid<MVC.Models.TransactionHistoryModel>()
    .Name("TransactionHistroyGrid")
     .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(25)
        .ServerOperation(true)
        .Read(read => read
            .Action("TransactionHistorySearch_Read", "TransactionHistoryResults")
            .Data("additionalData")
            )
     )
    .Columns(columns =>
    {
        columns.Bound(p => p.UserId).Filterable(false).Width(40).Title("Userid");
        columns.Bound(p => p.Reviewed).Template(@<text></text>).ClientTemplate("<input id='checkbox'  class='chkbx' type='checkbox' />").Filterable(false).Width(30).Title("Reviewed");
        columns.Bound(p => p.CreatedOnEnd).Format("{0:MM/dd/yyyy}").Filterable(false).Width(50).Title("Created On");
        columns.Bound(p => p.UpdatedOnEnd).Format("{0:MM/dd/yyyy}").Filterable(false).Width(50).Title("Updated On");
        columns.Bound(p => p.Comment).Filterable(false).Width(50).Title("Comment");
    })
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .HtmlAttributes(new { style = "height:325px;" })

  )
            </div>
8 hữu ích 0 bình luận chia sẻ
2

Đây là giải pháp phân trang tùy chỉnh mà chúng tôi đã triển khai cho Kendo ListView. Với sửa đổi nhỏ, nó sẽ hoạt động cho lưới điện. Giải pháp bao gồm một Đối tượng DataSoure tùy chỉnh và một lớp JSonResult tùy chỉnh.

Nguồn dữ liệu tùy chỉnh:

public class MyDataSource
{
    public object AggregateResults { get; set; }
    public object Data { get; set; }
    public object Errors { get; set; }
    public int Total { get; set; }
}

ActionResult tùy chỉnh:

public class JsonNetResult : ActionResult
{
    public Encoding ContentEncoding { get; set; }
    public string ContentType { get; set; }
    public object Data { get; set; }

    public JsonSerializerSettings SerializerSettings { get; set; }
    public Formatting Formatting { get; set; }

    public JsonNetResult()
    {
        SerializerSettings = new JsonSerializerSettings();
    }

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
            throw new ArgumentNullException("context");

        HttpResponseBase response = context.HttpContext.Response;

        response.ContentType = !string.IsNullOrEmpty(ContentType)
                                   ? ContentType
                                   : "application/json";

        if (ContentEncoding != null)
            response.ContentEncoding = ContentEncoding;

        if (Data != null)
        {
            var writer = new JsonTextWriter(response.Output) { Formatting = Formatting };

            JsonSerializer serializer = JsonSerializer.Create(SerializerSettings);
            serializer.Serialize(writer, Data);

            writer.Flush();
        }
    }

Một cách sử dụng điển hình trong một phương pháp hành động sẽ là:

public ActionResult Orders_Read([DataSourceRequest] Object request)
    {
        int count = 0;
        var ds = (DataSourceRequest)request;
        var ListOfItemsToDisplay = GetItemsWithPagingInfo
                                (
                                    MySearchParameters,
                                    ds.PageSize,
                                    ds.Page,
                                    out count
                                );
        return new JsonNetResult
                                {
                                    Formatting = Formatting.Indented,
                                    Data = new MyDataSource
                                                   {
                                                       Data = ListOfItemsToDisplay
                                                       Total = count,
                                                       AggregateResults = null,
                                                       Errors = null
                                                   }
                                    };
    }
2 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ asp.net mvc asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading