0

grid.bind 経由でも編集を処理しています。

$(document).ready(function () { 
    //  Dialog related
    var grid = $("#MyGrid").data("kendoGrid");

    grid.bind("edit", function (e) {
        var datePicker = $("#EndDate").getKendoDatePicker();
        if (e.model.isNew()) {
            e.container.kendoWindow("title", "Add Something");
        }
        else {
            e.container.kendoWindow("title", "Edit Something");                             
        }
    });
});

イベントが初めて発生したとき、datepicker は使用可能なオブジェクトです。その後のイベントの発生には、日付ピッカーが未定義として含まれます。

更新: 同じことを行う非剣道ページのサンプルも作成しました。

http://jsbin.com/uZEqiMo/1/edit?html,js,output

違いと、剣道UIで毎回参照を取得するためにできることを誰か説明できますか?

4

1 に答える 1

0

これを行う多くの方法を試した後、編集イベントに渡されるイベント引数をさらに調べ始めました (そして、他のイベントも確かです)。解決策は、グリッドで検索するのではなく、渡されたイベント オブジェクトからコントロールを検索することです。私の場合、'e' という名前のイベント オブジェクトには 'container' プロパティがあります。この「コンテナ」プロパティは、実際にはウィンドウ (ポップアップ ダイアログ) への参照であるため、これに対して jquery の検索を呼び出すと機能します。更新されたコードは次のとおりです。

$(document).ready(function () { 
    //  Dialog related
    var grid = $("#MyGrid").data("kendoGrid");

    grid.bind("edit", function (e) {
        //  Note: getKendoDatePicker below you could be substituted with .data("kendoDatePicker") // Right way
        var datePicker = $(e.container).find("EndDate").getKendoDatePicker();

        // var datePicker = $("#EndDate").getKendoDatePicker(); - Wrong way
        if (e.model.isNew()) {
        e.container.kendoWindow("title", "Add Something");
        datePicker.enable(false);
    }
    else {
            e.container.kendoWindow("title", "Edit Something");
            datePicker.enable(true);
    }
    });
});
于 2013-09-23T18:30:16.260 に答える