2013-02-23 38 views
1

我一直试图让这段代码现在工作一段时间,而且我已经用完了想法。我在网上查找,找不到任何有用的东西。Kendo-UI Grid使用Javascript获取单元格值

我有一个网格定义,其中有一个人名单。用户可以点击该人将其添加到他们的联系人。我有一个自定义命令,它为我的操作做了一个帖子。

这很可能将最终被简单的东西,我可以俯瞰..

我无法获得电网的DataItem的。以下是错误我收到:

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

以下是我的javascript功能:

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 }, 
     }); 
    } 

网:

@(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)) 
) 

使用的脚本:

<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> 

回答

5

在你的JS你需要获取对你的网格的引用而不是使用这个。

var grid = $("#Grid").data("kendoGrid"); 
var dataItem = grid.dataItem($(e.currentTarget).closest("tr")); 
+0

我试过之前,结果在同一个错误... – Leon 2013-02-25 22:33:03

2

最后,问题出在网格配置上。

我必须将DataSource设置为Ajax绑定而不是Server。服务器绑定可防止保存任何客户端数据。

+0

欢呼声,我在同一问题上被困难了很多年,似乎很奇怪,因为我绑定到模型,不使用ajax所以为什么必须设置ajax超出我。 – 2013-06-30 23:15:39