asp.net mvc-Kendo UI网格获取Javascript中的Cell值

asp.net mvc - Kendo-UI Grid Get Cell value in Javascript

本文关键字:Javascript 中的 Cell 获取 网格 net mvc-Kendo UI asp      更新时间:2023-09-26

我已经尝试让这段代码工作了一段时间,但我已经没有什么想法了。我在网上查了一下,找不到任何有用的东西。

我定义了一个网格,其中包含人员列表。用户可以单击此人将其添加到联系人中。我有一个自定义命令,它会发布到我的Action中。

这可能最终会成为一件我忽略的简单事情。。

我无法获取网格的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>

在JS中,您需要获取对网格的引用,而不是使用它。

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

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

我不得不将DataSource设置为Ajax绑定,而不是Server。服务器绑定阻止保存任何客户端数据。