2

超簡単コンセプト!...

ある時点で、編集可能なグリッド (および詳細グリッド) を読み取り専用に設定する必要があります...だから、次のようなことをしたいと思います:

var grid = $("#grid").data("kendoGrid");
grid.options.editable = false;

もちろん、これは単純すぎるため機能しません...

助けてくれてありがとう!

4

2 に答える 2

4

2 つのグリッドを用意することをお勧めします。1 つは読み取り専用、もう 1 つは読み書き可能ですが、表示されるのは 1 つだけです。どちらも DataSource 定義を共有しているため、常に同期しています。一方から他方に変更したい場合は、可視を非表示にして他方を表示します。

例: まったく同じ定義の 2 つのグリッドを作成しますが、1 つが非表示で 1 つが表示され、1 つが編集可能でもう 1 つが編集可能でないという点だけが異なります。どちらも同じ DataSource を共有しているため、一方のページを変更すると他方が変更され、一方を編集すると他方が更新されるため、実際には完璧に機能します。

何かのようなもの:

1- 可視性の切り替えに使用される CSS 定義:

.ob-hide {
    display : none;
}

2- DataSource 定義:

var ds = new kendo.data.DataSource({
    transport : {
        read : {
            url: ...
        },
        update : {
            url: ...
        },
        create : {
            url: ...
        },
        destroy : {
            url: ...
        }
    },
    pageSize: 10,
    schema  : {
        model: {
            id : ...,
            fields: {
                id       : { type: '...' },
                ...
            }
        }
    }
});

次の 2 つのグリッド:

$("#grid-editable").kendoGrid({
    editable: "inline",
    dataSource : ds,
    ...
}

$("#grid-not-editable").kendoGrid({
    editable: false,
    dataSource: ds,
    ...
});

$("#grid-editable").addClass("ob-hide");

そして最後に、モードを切り替える機能:

function gridEditable() {
    $("#grid-editable").removeClass("ob-hide");
    $("#grid-not-editable").addClass("ob-hide");
});

function gridNotEditable() {
    $("#grid-editable").addClass("ob-hide");
    $("#grid-not-editable").removeClass("ob-hide");
});

ここで実行されていることを確認してください: http://jsfiddle.net/OnaBai/bCEJR/2/

于 2013-08-01T07:17:41.157 に答える
0

disabled="disabled"必要な要素を追加することで、より良いスタイルに取り組みました。kendoangular JSを使用すると、グリッドを無効に設定するとユーザーが編集できなくなるため、魅力的に機能しました。試してみてください。角度がなくても機能する可能性があります!

于 2014-05-26T09:54:38.010 に答える