1

以下は私のグリッドです。

イベントを見るとsave:、AJAX 呼び出しに気付くでしょう。

この AJAX 呼び出しが発火し、データがデータベースに挿入され、アラート機能が実行されていることさえわかります。ただし、インライン編集している行のグリッドは編集モードを終了しません。エラーメッセージがひどいので、何が起こっているのかわかりません。私は得続けます:

TypeError: Cannot read property 'data' of undefined [http://localhost/x/Scripts/kendo.web.min.js:13]

グリッドは次のとおりです。

function directorsOrRecipients(e)
{
    awardTitleId = e.data.AwardTitleId;

    var detailRow = e.detailRow;

    detailRow.find(".childTabstrip").kendoTabStrip({
        animation: {
            open: { effects: "fadeIn" }
        }
    });

    detailRow.find(".directorsOrRecipients").kendoGrid({
        reorderable: true,
        resizable: true,
        dataSource: {
            transport: {
                read: {
                    url: "http://localhost/x/api/Awards/directors/" + awardTitleId,
                    type: "GET"
                },
            },
            schema: {
                model: {
                    id: "AwardDirectorId",
                    fields: {
                        "AwardDirectorId": { editable: false, type: "number" },
                        "namefirstlast": { editable: true, type: "string" },
                        "directorsequence": { editable: true, type: "number", validation: { min: 1 } },
                        "isonballot": { editable: true, type: "string" },
                        "concatenation": { editable: true, type: "string" },
                        "MoreNames": { editable: true, type: "number", validation: { min: 0 } },
                    }
                }
            }
        },
        columns: [
            { field: "AwardDirectorId", title: "Award Director Id" },
            { field: "namefirstlast", title: "Name", editor: namesAutoComplete },
            { field: "directorsequence", title: "Director Sequence", format: "{0:n0}" },
            { field: "isonballot", title: "On ballot?", editor: onBallotDropDownEditor },
            { field: "concatenation", title: "Concatenation" },
            { field: "MoreNames", title: "More names?", format: "{0:n0}" },
            { command: ["edit"], title: " ", width: 100 }],
        sortable: true,
        sort: { field: "namefirstlast", dir: "desc" },
        editable: "inline",
        toolbar: [{ name: "create", text: "Add New Director/Recipient" }],
        save: function(e)
        {
            debugger;

            if (e.data != "undefined")
            {

                $.ajax({
                    url: "http://localhost/x/api/awards/directors",
                    type: "POST",
                    dataType: "json",
                    data: $.parseJSON(directorData)
                }).done(function()
                {
                    alert('done!');
                });
            }

        }
    });

    function onBallotDropDownEditor(container, options)
    {
        var data = [
            { "onBallotId": 1, "onBallotDescription": "Yes" },
            { "onBallotId": 2, "onBallotDescription": "No" }];

        $('<input required data-text-field="onBallotDescription" data-value-field="onBallotDescription" data-bind="value:' + options.field + '"/>')
            .appendTo(container)
            .kendoDropDownList({
                autoBind: false,
                dataSource: data
            });
    }
}
4

2 に答える 2

2

Ajax呼び出しで成功した後、これを試してください、

$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();
于 2013-09-07T08:52:02.773 に答える
0

コントローラーの更新関数では、空のJsonを挿入したオブジェクトを返します。このように、私にとってはうまくいきました

return Json(ModelState.IsValid ? new object() : ModelState.ToDataSourceResult());
于 2016-10-12T20:15:32.293 に答える