مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

farshad_pickup

عضویت از 1394/04/18

صفحه بندی در گرید کندوpaging in kendo grid

  • سه شنبه 21 مهر 1394
  • 05:58
تشکر میکنم

با سلام
اگر بخواهیم در MVC  صفحه بندی داشته باشیم با استفاده از SKIPو TAKE این کار به راحتی امکان پذیر است برای مثال 
 

int skip = (PageID - 1) * 5;
var users = db.Users.Include(u => u.Roels).OrderBy(u => u.UserID).Skip(skip).Take(5).ToList();
ViewBag.PageID = PageID;
ViewBag.Count = db.Users.Count();
return View(users);

ولی اگر بخواهیم از گرید کندو استفاده کنیم از این روش نمی توان استفاده کرد (! اگر می شود من نمی دونم و سوالم همینه که چطور میشه استفاده کرد؟)

در مثال های خود کندو از Ajax استفاده شده به این صورت که در View
 

@(Html.Kendo().Grid<onsou.Models.Users>()
        .Name("Grid")
        .Columns(columns =>
        {
        columns.Bound(model => model.UserEmail);
        columns.Bound(model => model.UserIsActive);
        columns.Bound(model => model.UserRegisterDate);
        columns.Bound(model => model.Roels.RoleTitle);
        columns.Bound(item => @item.UserID).Title("دستورات").Filterable(false).Groupable(false)
                      .Template(@<text>
									@Html.ActionLink("ویرایش", "Edit", new {id = @item.UserID}, new {@class = "k-button k-button-icontext k-grid-Edit"})
									@Html.ActionLink("حذف", "Delete", new {id = @item.UserID}, new {@class = "k-button k-button-icontext k-grid-Delete"})
									</text>).Width(200);
                  })
        .ToolBar(toolbar =>
        {
            toolbar.Custom().Action("Create","Users").Text("افزودن");
        }
        )
        .Groupable()
        .Pageable()
        .Sortable()
        .Scrollable()
        .Filterable()
        .DataSource(
                    dataSource => dataSource
                    .Ajax()
                    .Read(read => read.Action("Users_Read", "Users")) // Set the action method which will return the data in JSON format                    
                    )

    )

و در کنترلر

public ActionResult Users_Read([DataSourceRequest]DataSourceRequest request) { 
            IQueryable<Users> users = db.Users.Include(u => u.Roels);            
            users = users.OrderBy(o => o.UserID);            
            var total = users.Count();
            // Apply paging
            if (request.Page > 0)
            {
                users = users.Skip((request.Page - 1) * request.PageSize);
            }
            users = users.Take(request.PageSize);

            var result = new DataSourceResult()
            {
                Data = users, // Process data (paging and sorting applied)
                Total = total // Total number of records
            };
            return Json(result,JsonRequestBehavior.AllowGet);
        }

از این کد استفاده شده 
ولی متاسفانه وقتی من این کد را اجرا می کنم هیچ فید بکی ندارم و گرید خالی باقی می ماند ( با اینکه تابع User_Read فراخوانی می شود)

حالا سوال من اینه 
برای پیاده سازی صفحه بندی در گرید کندو آیا روشی هست که با استفاده از Take و  Skip  خودمون دکمه های صفحه بعد و قبل رو کنترل کنیم ؟
اگر نه به نظر شما چرا این Bind کردن Ajax ای هیچ فید بکی ندارد 
( البته جواب این سوال دوم رو تقریبا می دونم چرا که توی کنسول ارور ReferenceError: jQuery is not defined  jQuery(function(){jQuery("#Grid").kendoGrid({"columns":[{"title":"ایمیل","field"...

میده ولی Jquery  به وضوح تعریف شده و من نمی دونم چرا شناسایی نمیشه ؟)
ممنون از راهنمایی شما

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 21 مهر 1394
  • 08:07

شما میتونید Pagging کندو را غیر فعال کنید و خودتون مدیریت صفحات رو با استفاده از Take و Skip بر عهده بگیرید

کاربرانی که از این پست تشکر کرده اند شیراز سوشال

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)