2013-02-23 71 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