PDA

View Full Version : سوال: paging



minaforotan
دوشنبه 02 تیر 1393, 21:39 عصر
دوستان چطوری میتونم از paging خود mvc استفاده کنم؟لازمه چیزی و نصب کنم؟

helpsos
سه شنبه 03 تیر 1393, 08:53 صبح
اگه من درست متوجه شده باشم Paging خود MVC میاد و کل اطلاعات رو از بانک مب خونه بعد ما میایم و می گیم که این همه اطلاعات رو که خوندی برامون pageبندی کن و بعدا مثلا صفحه 10 رو بیار که این اصلا بهینه نیست
شما دنبال روشهایی بگردید که بتونید به تعداد مورد نظر از بانک اطلاعات بیارید مثل دستورات skip , take در Linq
البته اینارو زیاد مطمئن نیستم ولی :متفکر:

hadi0x7c7
سه شنبه 03 تیر 1393, 11:57 صبح
شما یه سرچ بزن paged List اینجا (http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)هم یه نمونه خوبی داره

minaforotan
سه شنبه 03 تیر 1393, 16:51 عصر
شما یه سرچ بزن paged List اینجا (http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)هم یه نمونه خوبی داره

این و دیدم از همینجا فهمیدم که خود mvc هنچین امکانی داره اما نصب نمیشهInstall-Package PagedList.Mvc خطا میده و واسه همین باقی دستورات هم نمیشناسه

hadi0x7c7
سه شنبه 03 تیر 1393, 21:57 عصر
...............

hadi0x7c7
سه شنبه 03 تیر 1393, 21:58 عصر
شما میتونی خودت هم pagin رو پیاده سازی کنی به این صورت که یه مدل میسازی به نام paging Info به این صورت:
public class PagingInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }

public int TotalPages
{
get
{
return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage);
}
}
}

بعد این متد کمکی رو مسازی:
public static MvcHtmlString PageLinks(this HtmlHelper html,
PagingInfo pagingInfo,
Func<int, string> pageUrl)
{
StringBuilder result = new StringBuilder();

for (int i = 1; i <= pagingInfo.TotalPages; i++)
{
TagBuilder tag = new TagBuilder("a");
tag.MergeAttribute("href", pageUrl(i));
tag.InnerHtml = i.ToString();

if (i == pagingInfo.CurrentPage)
{
tag.AddCssClass("selected");
tag.AddCssClass("btn-primary");
}
tag.AddCssClass("btn btn-default");
result.Append(tag.ToString());
}
return MvcHtmlString.Create(result.ToString());
}

و مثلا توی یک ویوو که نیاز به پیجینگ داری ایو اضافه میکنی:

<div class="btn-group pull-right">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new { page = x , category = Model.CurrentCategory}))
</div>

و توی متد اکشن این ویوو هم مدل رو اینطوری به ویوو پاس میدی:
public ActionResult List(string category, int page = 1)
{
ProductsListViewModel model = new ProductsListViewModel
{
Products = repository.Products.Where(p => p.Category == null || p.Category == category)
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = category == null ? repository.Products.Count() : repository.Products.Where(p => p.Category == category).Count()
},
CurrentCategory = category
};

return View(model);
}

اینم محتویات کلاس
public class ProductsListViewModel
{
public IEnumerable<Product> Products { get; set; }
public PagingInfo PagingInfo { get; set; }

public string CurrentCategory { get; set; }
}

البته سعی کنید همون لینکی که معرفی کردم رو باهاش کار کنید ببینید اررور از کجاس(ورژن mvc و ....)

minaforotan
سه شنبه 03 تیر 1393, 22:49 عصر
ممنون که وقت گذاشتین اینم تست میکنم خبر میدم

minaforotan
چهارشنبه 04 تیر 1393, 12:25 عصر
ببین دوست عزیز به نظرم این روش جالبی نیس و من میخوام از امکان خود mvc استفاده کنم
و 4.1.0 Install-Package PagedList.Mvc نصب کردم گفت با موفقیت هم نصب شد اما اون قسمتی که باید برم تو ویوی مورد نظرم و گفته این دستورها رو بنویس


@model PagedList.IPagedList<ContosoUniversity.Models.Student>
@using PagedList.Mvc;

PagedList رو نمیشناسه
باید چیکار کنم؟

aroshanzamir
چهارشنبه 04 تیر 1393, 13:56 عصر
ببین دوست عزیز به نظرم این روش جالبی نیس و من میخوام از امکان خود mvc استفاده کنم
و 4.1.0 Install-Package PagedList.Mvc نصب کردم گفت با موفقیت هم نصب شد اما اون قسمتی که باید برم تو ویوی مورد نظرم و گفته این دستورها رو بنویس


@model PagedList.IPagedList<ContosoUniversity.Models.Student>
@using PagedList.Mvc;

PagedList رو نمیشناسه
باید چیکار کنم؟

اتفاقا روشی که دوست خوبمون
hadi0x7c7 (http://barnamenevis.org/member.php?248784-hadi0x7c7) ارائه داد خیلی بهتر از پکیج می باشد ....
یه کم بهش فکر کنی متوجه می شوی

موفق باشی

ahad123
پنج شنبه 19 تیر 1393, 11:48 صبح
روش خوبیه من قبلا تست کردم