Search code examples
knockout.jskendo-gridknockout-kendo

Kendo grid, ko binding, and access to row index


I have a ko viewmodel, which I bind to a KendoGrid, using knockout-kendo.js

I use rowTemplate, because I need some custom functionality in some columns (icon, links, etc)

I need to do some custom functionality based on rownumber.

When binding ko viewmodel directly, I can use foreach binding and in the row template I have the $index which gives me the current row number.

How can I get the same thing when the viewmodel is bound to a Kendo Grid?

Thank you


Solution

  • Currently there is no built in index functionality support in the Kendo-Knockout the templates (also there is no support for this in the native Kendo templates).

    However you could use the jQuery's index() method in combination with the $element binding context poperty to get the current tr position inside the datagird (altough this does not work correctly if you using paging):

    <div data-bind="kendoGrid: { data: items, rowTemplate: 'rowTmpl', 
                                 useKOTemplates: true }"> </div>
    
    <script id="rowTmpl" type="text/html">
        <tr>
            <td>
                Row index: 
                    <span data-bind="text: $($element).closest('tr').index()"></span>
            </td>
        </tr>
    </script>
    

    Demo JSFiddle.