paging و sorting در webgrid

paging و sorting در webgrid

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

 

 

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

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

ایجاد یک Model

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

 

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

نظرات

  • Hannah Martinez
    sepidar
    دو شنبه 11 دی 1278 - 0:00

    سلام مهربونم
    وب جالبی داری
    خوشحال میشم باهات بیشتر آشنا بشم و پستاتو با دوستام لایک کنم.....جامعه مجازی فیس کمپ یه محیط دوستانه با مجوز از ارشاد:
    http://facecamp.ir
    اینم چت روم مون:
    http://campchat.ir/
    خیلی راخت میتونی همون جا عکساتم اپلود کنی
    campup.ir
    اینم لینک شخصی من..خوشحال میشم دعوتمو قبول کنی:
    http://facecamp.ir/signup/invited:cecca6029a01c83a75ead54899a535d7
    #فدامدا

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس