1
votes

I have a Selectable Kendo Grid with a Custom Toolbar Button. How can I get the selected row PK when button is Clicked? I tried many tips but no one was working because I have a Server DataSource.

    <%: Html.Kendo().Grid<Web.Models.Model>() 
    .Name("Grid")
    .BindTo((IEnumerable<Web.Models.Model>)ViewBag.List)
    .Columns(columns =>
    {
        columns.Bound(p => p.PK).Title("PK");
        columns.Bound(p => p.STATUS).Title("Status");
        columns.Bound(p => p.NOTES).Title("Notes");                      
    })

    .ToolBar(toolbar =>
    {
        toolbar.Custom();
        toolbar.Template("<a class='k-button k-button-icontext' onClick='EditItem();' ></span>Edit Item</a>");
    })    
    .DataSource(dataSource => dataSource
        .Server()
        .Model(Model => Model.Id(p => p.PK))
        )   
    .Selectable(selectable => selectable
        .Mode(GridSelectionMode.Multiple))  

%>



function EditItem(e) {

???

};
3
please try Find method in Jquery.Neo Vijay

3 Answers

1
votes

Please try with the below code snippet.

<script>
    function EditItem() { 
        var grid = $("#Grid").data("kendoGrid");
        var rows = grid.select();
        rows.each(function (index, row) {
            var selectedItem = grid.dataItem(row);
            alert(selectedItem.PK);
        });
    }
</script>

Let me know if any concern.

0
votes

hi you can use plain jquery for that as an another option

var rowID = $("#Grid .k-state-selected").find("td:eq(0)")[0].innerText
alert(rowID)
0
votes

This one works!

                function EditItem(e) {

                    var selectedRows = $("#Grid").find(".k-state-selected");
                    for (var i = 0; i < selectedRows.length; i++) {
                        var selectedRow = selectedRows[i];
                        var PK = selectedRows[i].cells[0].innerText;
                    }

                };