1

私はしばらくの間、このコードを機能させようとしてきましたが、アイデアが尽きてしまいました。オンラインで調べましたが、役立つものは何も見つかりませんでした。

人のリストを持つグリッドが定義されています。ユーザーはその人をクリックして連絡先に追加できます。アクションへの投稿を行うカスタム コマンドがあります。

これはおそらく、私が見落としている単純なものになるでしょう..

グリッドの 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>
4

2 に答える 2

5

JSでは、これを使用する代わりに、グリッドへの参照を取得する必要があります。

var grid = $("#Grid").data("kendoGrid");
var dataItem = grid.dataItem($(e.currentTarget).closest("tr"));
于 2013-02-24T23:27:04.227 に答える
2

結局、問題はグリッド構成にありました。

Server ではなく、DataSource を Ajax バインディングに設定する必要がありました。サーバー バインドにより、クライアント側のデータが保存されなくなります。

于 2013-02-26T23:21:43.013 に答える