ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

paging و sorting در webgrid

بسم الله الرحمن الرحیم

آموزش ساخت paging و sorting اختصاصی در webgrid

اضافه کردن خاصیت های paging و sorting در webgrid بسیار ساده است.  اگر شما می خواهید این خاصیت های پیش فرض را کنترل کنید باید تنظیماتی را انجام دهید. در این مقاله می خواهیم خاصیت های paging و  sortingرا به صورت اختصاصی تغییر دهیم. لطفا ابتدا مقاله "آموزش طراحی یک وب گرید به صورت Ajax" که در همین سایت نوشته شد، بخوانید.

ایجاد یک Model

ما به صورت Database First این پروژه را انجام خواهیم داد، Table ما با نام Customer به صورت زیر است.

webgrid


کد مربوط به paging و  sorting

در اینجا کد مربوط به paging و  sorting و همچنین واکشی اطلاعات از جدول Customer را می نویسیم:

    public class ModelServices : IDisposable
    {
    private readonly TestDBEntities entities = new TestDBEntities();
    //For Custom Paging
    public IEnumerable<Customer> GetCustomerPage(int pageNumber, int pageSize, string sort, bool Dir)
    {
    if (pageNumber < 1)
    pageNumber = 1;
    if (sort == "name")
    return entities.Customers.OrderByWithDirection(x => x.Name, Dir)
    .Skip((pageNumber - 1) * pageSize)
    .Take(pageSize)
    .ToList();
    else if (sort == "address")
    return entities.Customers.OrderByWithDirection(x => x.Address, Dir)
    .Skip((pageNumber - 1) * pageSize)
    .Take(pageSize)
    .ToList();
    else if (sort == "contactno")
    return entities.Customers.OrderByWithDirection(x => x.ContactNo, Dir)
    .Skip((pageNumber - 1) * pageSize)
    .Take(pageSize)
    .ToList();
    else
    return entities.Customers.OrderByWithDirection(x => x.CustID, Dir)
    .Skip((pageNumber - 1) * pageSize)
    .Take(pageSize)
    .ToList();
    }
    public int CountCustomer()
    {
    return entities.Customers.Count();
    }
    public void Dispose()
    {
    entities.Dispose();
    }
    }
     
    public class PagedCustomerModel
    {
    public int TotalRows { get; set; }
    public IEnumerable<Customer> Customer { get; set; }
    public int PageSize { get; set; }
    }

Extension Method برای OrderByWithDirection

public static class SortExtension
{
public static IOrderedEnumerable OrderByWithDirection
(this IEnumerable source,Func keySelector,bool descending)
{
return descending ? source.OrderByDescending(keySelector)
: source.OrderBy(keySelector);
}
public static IOrderedQueryable OrderByWithDirection
(this IQueryable source,Expression> keySelector,bool descending)
{
return descending ? source.OrderByDescending(keySelector)
: source.OrderBy(keySelector);
}
}

کد مربوط به View

    @model Mvc4_CustomWebGrid.Models.PagedCustomerModel
    @{
    ViewBag.Title = "WebGrid with Custom Paging, Sorting";
    WebGrid grid = new WebGrid(rowsPerPage: Model.PageSize);
    grid.Bind(Model.Customer,
    autoSortAndPage: false,
    rowCount: Model.TotalRows);
    }
     
    @grid.GetHtml(
    fillEmptyRows: false,
    alternatingRowStyle: "alternate-row",
    headerStyle: "grid-header",
    footerStyle: "grid-footer",
    mode: WebGridPagerModes.All,
    firstText: "<< First",
    previousText: "< Prev",
    nextText: "Next >",
    lastText: "Last >>",
    columns: new[] {
    grid.Column("CustID",header: "ID", canSort: false),
    grid.Column("Name"),
    grid.Column("Address"),
    grid.Column("ContactNo",header: "Contact No")
    }
    )

کد مربوط به Controller

    public class HomeController : Controller
    {
    ModelServices mobjModel = new ModelServices();
    public ActionResult WebGridCustomPaging(int page = 1, string sort = "custid", string sortDir = "ASC")
    {
    const int pageSize = 5;
    var totalRows = mobjModel.CountCustomer();
    bool Dir = sortDir.Equals("desc", StringComparison.CurrentCultureIgnoreCase) ? true : false;
    var customer = mobjModel.GetCustomerPage(page, pageSize, sort, Dir);
    var data = new PagedCustomerModel()
    {
    TotalRows = totalRows,
    PageSize = pageSize,
    Customer = customer
    };
    return View(data);
    }
    }

خروجی ما

آموزش webgrid در asp.net mvc

آموزش webgrid در asp.net mvc

دانلود پروژه ASP.NET MVC webgrid

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
up
ما را در گوگل محبوب کنید