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

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

کاربر سایت

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 بر عهده بگیرید

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

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

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

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