如何在MVC WebGrid中显示行号

M.A*_*zad 4 asp.net-mvc razor asp.net-mvc-3

我希望row number在MVC WebGrid中有一个列.我该怎么做?

tak*_*gen 11

这是一个非常好的方法,但是当你使用排序或分页时,你的RowNumber值不会从页面上的1开始.

在我的项目中我有一个案例,我需要知道行的索引独立于WebGrid的分页/排序,我遇到了以下解决方案:

grid.Column(
    Header: "RowNumber",
    Format: item => item.WebGrid.Rows.IndexOf(item) + 1
)
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 9

您可以使用包含指示行号的属性的视图模型.

假设您有以下域模型:

public class DomainModel
{
    public string Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,您构建一个与视图要求相对应的视图模型:

public class MyViewModel
{
    public int RowNumber { get; set; }
    public string Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后:

public ActionResult Index()
{
    // fetch the domain model from somewhere
    var domain = Enumerable.Range(1, 5).Select(x => new DomainModel
    {
        Foo = "foo " + x
    });

    // now build the view model
    // TODO: use AutoMapper to perform this mapping
    var model = domain.Select((element, index) => new MyViewModel
    {
        RowNumber = index + 1,
        Foo = element.Foo
    });

    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

现在,您的视图将成为视图模型的强类型:

@model IEnumerable<MyViewModel>

@{
    var grid = new WebGrid(Model);
}

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column("RowNumber"),
        grid.Column("Foo")
    )
)
Run Code Online (Sandbox Code Playgroud)

现在让我们假设你出于某种愚蠢的原因不想使用视图模型.在这种情况下,如果您愿意,可以将视图转换为意大利面条代码:

@model IEnumerable<DomainModel>

@{
    var grid = new WebGrid(Model.Select((element, index) => new { element, index }));
}

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column("RowNumber", format: item => item.index + 1),
        grid.Column("Foo", format: item => item.element.Foo)
    )
)
Run Code Online (Sandbox Code Playgroud)


小智 5

只需添加以下代码即可

grid.Column(header: "No."
,format: item => item.WebGrid.Rows.IndexOf(item) + 1 
          + Math.Round(Convert.ToDouble(grid.TotalRowCount / grid.PageCount) / grid.RowsPerPage) 
            * grid.RowsPerPage * grid.PageIndex)
Run Code Online (Sandbox Code Playgroud)

请查看此链接以获取更多信息

希望这会对某人有所帮助