【问题标题】:how to set total page count in webGrid helper如何在 webGrid 助手中设置总页数
【发布时间】:2016-01-10 07:12:49
【问题描述】:

我使用 WebGrid helper mvc 来显示数据。我想通过跳过和计数来获取数据,为此我使用此操作:

public static IList<Employee> CreateEmployees(int page,int count)
    {
        var skipe = page * count;
        var list = new List<Employee>();
        var rnd = new Random();
        for (int i = 1; i <= 1000; i++)
        {
            list.Add(new Employee
            {
                Id = i + 1000,
                FirstName = "fName " + i,
                LastName = "lName " + i,
                AddDate = DateTime.Now.AddYears(-rnd.Next(1, 10)),
                Salary = rnd.Next(400, 3000),
                Projects = CreateRandomProjects()
            });
        }

        return list.Skip(skipe).Take(count).ToList();
    }

但是当我在网格视图中显示数据时它只有一页,因为我每次读取 10 条记录,我想要获取 Total page 并将其设置为 ViewBag 并在 View Set 中设置为 WebGrid 中的总数。我显示 Grid 的代码是:

    @helper WebGridPageFirstItem(WebGrid grid)
{
    @(((grid.PageIndex + 1) * grid.RowsPerPage) - (grid.RowsPerPage - 1));
}

@helper WebGridPageLastItem(WebGrid grid)
{
    if (grid.TotalRowCount < (grid.PageIndex + 1 * grid.RowsPerPage))
    {
        @grid.TotalRowCount;

    }
    else
    {
        @((grid.PageIndex + 1) * grid.RowsPerPage);
    }
}

<h2>Employees List</h2>

@{
    var grid = new WebGrid(
        source: Model,
        canPage: true,
        rowsPerPage: 10,
        canSort: true,
        defaultSort: "FirstName"
    );
    var salaryPageSum = 0;
    var taxPageSum = 0;
    var rowIndex = ((grid.PageIndex + 1) * grid.RowsPerPage) - (grid.RowsPerPage - 1);
}

<div id="container">
    @grid.GetHtml(
            tableStyle: "webgrid",
            headerStyle: "webgrid-header",
            footerStyle: "webgrid-footer",
            alternatingRowStyle: "webgrid-alternating-row",
            selectedRowStyle: "webgrid-selected-row",
            rowStyle: "webgrid-row-style",
            htmlAttributes: new { id = "MyGrid" },
            mode: WebGridPagerModes.All,
            columns: grid.Columns(
                 grid.Column(header: "#",
                             style: "text-align-center-col",
                             format: @<text>@(rowIndex++)</text>),
                 grid.Column(columnName: "FirstName", header: "First Name",
                             format: @<span style='font-weight: bold'>@item.FirstName</span>,
                             style: "text-align-center-col"),
                 grid.Column(columnName: "LastName", header: "Last Name"),
                 grid.Column(header: "Image",
                             style: "text-align-center-col",
                             format: @<text><img alt="@item.Id" src="@Url.Content("~/images/" + @item.Id + ".jpg")" /></text>),

                 grid.Column(header: "",
                             style: "text-align-center-col",
                             format: item => @Html.ActionLink(linkText: "Edit", actionName: "Edit",
                                                              controllerName: "Home", routeValues: new { id = item.Id },
                                                              htmlAttributes: null)),
                 grid.Column(header: "",
                             format: @<form action="/Home/Delete/@item.Id" method="post">
                    <input type="submit"
                           onclick="return confirm('Do you want to delete this record?');"
                           value="Delete" />
                </form>),
                     grid.Column(header: "", format: item => item.GetSelectLink("Select"))
                          )
                      )

    <strong>Page:</strong> @(grid.PageIndex + 1) / @grid.PageCount,
    <strong>Records:</strong> @WebGridPageFirstItem(@grid) - @WebGridPageLastItem(@grid) of @grid.TotalRowCount

</div>

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 webgrid


    【解决方案1】:

    每次调用方法时都在重新创建列表。

    你应该这样做:

    .
    .
    var TotalEmployees = 1000;
    var list = new List<Employee>();
    FillList();
    
    public void FillList(int totalEmployees)
    {
       var rnd = new Random();
       for (int i = 1; i <= totalEmployees; i++)
       {
         list.Add(new Employee
         {
           Id = i + 1000,
           FirstName = "fName " + i,
           LastName = "lName " + i,
           AddDate = DateTime.Now.AddYears(-rnd.Next(1, 10)),
           Salary = rnd.Next(400, 3000),
           Projects = CreateRandomProjects()
         });
        }
      }
    }
    
    
    public static IList<Employee> EmployeesForPage(int page,int count)
        {
            var skipe = page * count;
            ViewBag.TotalPages = TotalEmployees/count;
            return list.Skip(skipe).Take(count).ToList();
        }
    

    【讨论】:

      猜你喜欢
      • 2016-04-16
      • 2021-05-19
      • 2011-05-31
      • 2017-06-02
      • 2016-03-25
      • 2011-02-09
      • 2014-11-24
      • 2018-02-25
      • 1970-01-01
      相关资源
      最近更新 更多