web-dev-qa-db-ja.com

Kendogrid destroy()を実行して、新しいデータソースにテーブルを再作成します。なぜ古いテーブル列がまだ存在するのですか?

KendoUIグリッドでdestroy()を呼び出してから、新しいDataSourceでテーブルを再作成する場合:古いテーブル列がまだ存在するのはなぜですか?

ここで発言権を維持する唯一の要素は要素です。新しいデータソース列を読み取るようにグリッドに指示するにはどうすればよいですか(他のすべてを正しく読み取ります)。

(2つの異なる要素を作成すると、両方とも正しく入力されますが、1つの要素を保持し、要素テーブルをdestroyとreinitで置き換えます)

15
afinegan

おそらくこれは、グリッドコンテナ内のコンテンツをクリアしていないためです。例えば.

$('#gridName').data().kendoGrid.destroy();
$('#gridName').empty();

またはより短い構文

$('#gridName').kendoGrid('destroy').empty();

他の方法では、グリッドは残っている古いhtmlを考慮に入れます-グリッドは ここ のようにテーブルから初期化できることを忘れないでください。

33
Petur Subev

Peter Subevの答えの最後の部分を明確にしたいのは、それが私を助けてくれたからです。

"グリッドは here "のようにテーブルから初期化できることを忘れないでください

これは、HTMLで<table>タグではなく<div>タグを使用したことを示しています。 <table>タグを使用すると、グリッドテーブルデータがグリッド列から分離されるため、$( '#gridName')。kendoGrid( 'destroy')。empty()を実行すると、テーブルデータが破棄/空になり、列情報ではありません。

HTMLの<table>タグを<div>タグに切り替えて、目的の結果を取得します。

2
JHaazez

angularフレームワークで作業していて、新しいdataSourceと新しい列でKendoグリッドを再初期化できないようです。2番目のグリッド初期化では何も機能しません。試しました:

  if (vm.mainHierGrid != null) {
            //vm.mainHierGrid.data().kendoGrid.destroy();
            $('#mainGrid').data().kendoGrid.destroy();
            //$('#mainGrid').empty();
            vm.mainHierGrid.destroy();
        }
1
bob.mazzo

剣道グリッドを破壊して再バインド

if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
                    $('#kgCopyEntityGrid').kendoGrid('destroy').empty();
                }

                var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
                }).data("kendoGrid");
0
Awadhesh Singh