1

I have been trying to get this piece of code to work for a while now, and I have run out of ideas. I looked online and could not find anything helpful.

I have a grid defined which has a lists of persons. User can click on the person to add it to their contacts. I have a custom command which does a post to my Action.

This is probably going to end up being something simple that I am overlooking..

I am unable to get the dataItem of the Grid. Following is the error I receive:

Uncaught TypeError: Cannot read property '0' of undefined y.extend.dataItem addContact p.isFunction.f p.event.dispatch g.handle.h 

Following is my Javascript function:

function addContact(e) { debugger; e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); // <-- ERRORS HERE var id = dataItem.Id var url = "@Url.Action("AddContact", "Contacts")"; alert(url); $.ajax({ url: url, type: 'POST', data: { contactID: id }, }); } 

Grid:

@(Html.Kendo().Grid(ViewBag.Contacts as List<Contacts>) .Name("Grid") .Columns(columns => { columns.Bound(p => p.FirstName); columns.Bound(p => p.LastName); columns.Bound(p => p.ReleaseDate); columns.Command(command => command.Custom("Add").Click("addContact")).Width(80).HtmlAttributes(new { title = "Add Contact" }); }) .Groupable() .Pageable() .Sortable() .Scrollable(s => s.Height("auto")) .Filterable() .DataSource(dataSource => dataSource .Server() .PageSize(50)) ) 

Used scripts:

<script src="http://cdn.kendostatic.com/2012.3.1315/js/jquery.min.js"></script> <script src="http://cdn.kendostatic.com/2012.3.1315/js/kendo.all.min.js"></script> <script src="http://cdn.kendostatic.com/2012.3.1315/js/kendo.aspnetmvc.min.js"></script> <script src="@Url.Content("~/Scripts/kendo.modernizr.custom.js")"></script> 

2 Answers 2

5

In your JS you need to grab a reference to your grid instead of using this.

var grid = $("#Grid").data("kendoGrid"); var dataItem = grid.dataItem($(e.currentTarget).closest("tr")); 
Sign up to request clarification or add additional context in comments.

Comments

2

In the end, the issue was with the Grid configuration.

I had to set DataSource to Ajax binding instead of Server. Server binding prevents any client side data from being saved.

1 Comment

cheers, I was stumped for ages on the same issue, seems odd because I am binding to the model, not using ajax so why have to set ajax is beyond me.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.