Akshay malvankar Ответов: 2

Как добавить разбиение на страницы в список на языке Си#


у меня есть список для продукта add_to_cart , теперь я хочу добавить к нему пагинацию,
как и первый 1,2 последний, могу ли я добавить к этому разбиение на страницы

ниже приведен мой код

List<Product> prod = Session["cart"] as List<Product>; // typeCast session into List
        int totalProd = prod.Count;
        //prod = prod.Skip(2 * 1).Take(2).ToList();
        
        products_gw.DataSource = prod;
        products_gw.DataBind();


а также когда я удаляю элемент из то пагинация удаляется

ниже приведена функция удаления элемента

Button btn = (Button)sender;
        int id = Convert.ToInt32(btn.CommandArgument);
        int pageIndex = 1;
        List<Product> prod = Session["cart"] as List<Product>;
        prod.RemoveAll(r => r.prodID == id);
        int totalProd = prod.Count;
        products_gw.DataSource = prod;
        products_gw.DataBind();


Что я уже пробовал:

я пытаюсь следовать коду

List<Product> prod = Session["cart"] as List<Product>; // typeCast session into List
        int totalProd = prod.Count;
int recordCount = Convert.ToInt32(totalProd);
        this.PopulatePager(recordCount, pageIndex);

<pre> private void PopulatePager(int recordCount, int currentPage)
    {
        try
        {
            double dblPageCount = (double)((decimal)recordCount / 2);
            int pageCount = (int)Math.Ceiling(dblPageCount);
            List<ListItem> pages = new List<ListItem>();
            
            if (pageCount > 0)
            {
                pages.Add(new ListItem("First", "1", currentPage > 1));
                for (int i = 1; i <= pageCount; i++)
                {
                    pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
                    
                }
                pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
            }
            rptPager.DataSource = pages;

            
            rptPager.DataBind();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }

Mohibur Rashid

вы пробовали google?
https://jasonwatmore.com/post/2018/10/17/c-pure-pagination-logic-in-c-aspnet
Это первое звено

Akshay malvankar

как это можно применить к списку<t>, Вот мой вопрос,как это сделать, как и выше я пробую один код, но он не работает

2 Ответов

Рейтинг:
12

Aj@yGohil

Здравствуйте попробуйте этот метод для разбиения на страницы

static IList<int> GetPage(IList<int> list, int pageNumber, int pageSize = 10)
{
    return list.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
}