Search code examples
asp.net-mvcrazorkendo-uikendo-asp.net-mvc

Kendo UI Grid - Show row number


How do I show the row number in a Kendo UI Grid? The code I have is not working. The page displays the column but it's empty.

@{int counter = 1;}

@(Html.Kendo().Grid<QueueViewModel>()
      .Name("Queue")
      .Columns(columns =>
      {
          columns.Template(@<text><span>@counter @{ counter++; }</span></text>).Title("#");
      })
     .DataSource(dataSource => dataSource
     .Ajax()
     .PageSize(10) 
     .Read(read => read.Action("GetOpenQueue", "DataSource", new { GeneralQueue = true })
))

Solution

  • Do this:

    @{
       int counter = 1;
    }
    
    @(Html.Kendo().Grid<QueueViewModel>()
          .Name("Queue")
          .Columns(columns =>
          {
              columns.Template(@<text><span>@(counter++)</span></text>).Title("#");
          })
    

    Or, if your DataSource is set to Ajax (client-side), do this:

    <script>
        var counter = 1;
    
        function onDataBound(e) {
            counter = 1;
        }
    
        function renderNumber(data) {
            return counter++;
        }    
    </script>
    
    @(Html.Kendo().Grid()   
        .Name("Queue")
        .Columns(columns => {
            columns.Template(t => { }).ClientTemplate("#= renderNumber(data) #").Title("#");
        })
        .Events(ev => ev.DataBound("onDataBound"))
    )