在telerik mvc网格中创建序列号列

时间:2010-06-02 05:13:41

标签: asp.net-mvc

我可以用telerik mvc

创建一个网格
<% Html.Telerik().Grid(Model)
    .Name("ProductGrid")
    .Columns(columns => { 
                        columns.Bound(h => h.ProductName).Width("34%");
                        columns.Bound(h => h.Description).Width("60%");
                        columns.Bound(h => h.ProductID).Format(Html.ImageLink("Edit", "Products", new { Id = "{0}" }, "/Content/images/icon_edit.gif", "", new { Id = "edit{0}" }, null).ToString()).Encoded(false).Title("").Sortable(false).Width("3%");
                        columns.Bound(h => h.ProductID).Format(Html.ImageLink("Delete", "Products", new { Id = "{0}" }, "/Content/images/icon_delete.gif", "", new { onclick = string.Format("return confirm('Are you sure to delete this add on?');") },null).ToString()).Encoded(false).Title("").Sortable(false).Width("3%");
        })

    .EnableCustomBinding(true)
    .DataBinding(databinding => databinding.Ajax().Select("_Index", "ProductGrid"))
    .Pageable(settings => settings.Total((int)ViewData["TotalPages"])
    .PageSize(10))
    .Sortable()
    .Render(); %>

但是我需要在telerik网格中添加一个序列号列。我该怎么做?

3 个答案:

答案 0 :(得分:3)

我认为最好的方法是使用像这样的模板列。

<% 
    var sn = 0;
    Html.Telerik().Grid(Model).Name("Grid").HtmlAttributes(new { style = "width:auto" })
        .EnableCustomBinding(true)
        .Columns(columns =>
                    {
                        columns.Template(c=> {%> <%: ++sn %> <% }).Title("S/N");
                        columns.Bound(c => c.CustomerNumber);
                        columns.Bound(c => c.Narration);
                    })
                    .Render();  %>

这样您就不必将序列号属性添加到视图模型中。

希望这有帮助吗?

答案 1 :(得分:0)

我认为最好的方法是在您的Product类中添加一个SerialNumber列,而不仅仅是将另一个绑定列添加到网格中:

columns.Bound(h => h.SerialNumber)

如果您传递产品列表,则可以填充SerialNumber列,如下所示:

List<Product> products = GetList(); // Your method to get data here
int counter = 1;
products.ForEach(x => x.SerialNumber = counter++);

如果您希望通过分页支持一致的数字,则必须自己计算counter有价值的初始值。为此,您必须具有当前页面和页面大小。

答案 2 :(得分:-1)

在MVC Web Grid中 使用此计算

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