Reputation: 2295
I am migrating my application form MVC Extension to the Telerik UI for ASP.NET MVC. Changed the grid to:
@(Html.Kendo().Grid((IEnumerable<vw_Client_info>)ViewBag.Clients)
.Name("Clients")
.Columns(columns =>
{
columns.Bound(c => c.ClientID).Width(30).Title("Client ID").Hidden();
columns.Bound(c => c.FullName).Width(130);
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.ClientID))
.Read(read => read.Action("AllClientsSelection", "Visit")))
.Selectable()
.Events(events =>
{ events.Change("onRowSelected"); })
.RowAction(row => row.Selected = row.DataItem.ClientID.Equals(ViewData["id"]))
)
To get the cell value, I used before :
function onRowSelected(e) {
var detailGrid = $('#Visit').data('tGrid');
id = e.row.cells[0].innerHTML;
fullname = e.row.cells[1].innerHTML;
$('#ClientFullName').text(fullname);
detailGrid.rebind();
}
This works with Telerik MVC Extensions , but not with the new version, I get this error:
Unable to get property 'cells' of undefined or null reference.
I tried to use:
function onRowSelected(e) {
var detailGrid = $('#Visit').data('kendoGrid');
var id = e.row.ClientID;
var fullname = e.row.FullName;
$('#ClientFullName').text(fullname);
detailGrid.rebind();
}
I get this error:
Unable to get property 'ClientID' of undefined or null reference
Upvotes: 1
Views: 4079
Reputation: 2295
I found the answer:
var grid = $("#Clients").data("kendoGrid");
var selectedItem = grid.dataItem(grid.select());
id = selectedItem.ClientID;
fullname = selectedItem.FullName;
Upvotes: 2
Reputation: 51
This is due to the fact that the value of 'row' in:
var id = e.row.ClientID;
is null. So you might want to check if row is null before setting ClientID or cells[0] or cells[1] to the variables. So perhaps:
var id = null;
if(e.row != null)
id = e.row.ClientId
However, I think you might need to debug and find out if you're getting any 'row' count at all, though. Because if there is no 'row' then there is no 'row.ClientId' .
Upvotes: 0