0

剣道グリッド カスタム エディタに問題があります。剣道グリッドの編集ボタンをクリックしたときに、dateTimePicker をエディターとして使用したいと考えています。しかし、dateTimePicker でグリッドをカスタマイズしようとすると、常にエラーが発生します。

Uncaught TypeError: e.indexOf is not a function ---------- kendo.custom.min.js:1 

簡単なソースコードは次のとおりです。

  var data = [
            {"id":1, "dateTime": 1420947900000},
            {"id":2, "dateTime": 1421034300000},
            {"id":3, "dateTime": 1421036100000},
            ];
$("#grid").kendoGrid({
    selectable: true,
    editable: "inline",
    columns: [
        { 
            field: "dateTime", 
            title: "<center>Date Time</center>", 
            width: "200px",
            format: "{0:MM/dd/yyyy hh:mm}",
            template: "#= kendo.toString(new Date(parseInt(dateTime)), 'MM/dd/yyyy hh:mm') #",
            editor: dateTimeEditor2
        },
        { command: ["edit", "destroy"], title: "&nbsp;", width: "170px" }
    ],
    dataSource: {
        transport: {
            read: function(e) {
                e.success(data);
            },
            update: function(e) {
                //my update Function
        alert(e.dateTime);
            },
            autosync: true
        },
        schema: {
             model: {
                 id: "id",
                 fields: {
                     dateTime: { type: "datetime" },
                 }
             }
        }
    }
});
function dateTimeEditor2(container, options) {
    $('<input data-text-field="' + options.field + '" data-value-field="' + options.field 
            + '" data-bind="value:' + options.field + '" />')
            .appendTo(container)
            .kendoDateTimePicker({
                format:"MM/dd/yyyy hh:mm",
                value: new Date(options.model.dateTime)
            });
}

または、このリンクで確認できます

私はすでに多くの異なるソースでもそれをチェックしています:

  1. 参考1
  2. 参考2
4

1 に答える 1

1

「dateTime」フィールドは数値ですが、グリッド オプションに「datetime」タイプを使用しています。そして、エディター機能では、カスタム入力で「data-bind」属性を使用すると、kendoUI コードがブレーキをかけられます。これは、ある種の日付テキストが必要になるためです..

フィールド タイプを数値に更新し、入力属性を削除するコードを変更しました。エラーはなくなりました。ただし、エディターの値が変更されたときにグリッド dataItem の数値を更新するには、カスタム イベントを使用して DateTimePicker を実装する必要があります。または、おそらく、あなたの例で「更新」ボタンがクリックされたときに、datetime 値を整数に解析し、グリッド dataItem を設定することで..

http://dojo.telerik.com/ecICE

追加メモ: データソース配列を操作して、これらの数値をグリッドにバインドする前に JS DateTime 値に変更することも検討します。それはおそらくより簡単な解決策でしょう。

--

于 2016-08-08T07:52:46.480 に答える