destroy()
KendoUIグリッドで呼び出してから、新しいテーブルを再作成する場合DataSource
:古いテーブル列がまだ存在するのはなぜですか?
ここで発言権を維持する唯一の要素は要素です。新しいデータソース列を読み取るようにグリッドに指示するにはどうすればよいですか(他のすべてが正しく読み取られます)。
(2つの異なる要素を作成すると、両方とも適切に入力されますが、1つの要素を保持し、要素テーブルをdestroyとreinitで置き換えます)
destroy()
KendoUIグリッドで呼び出してから、新しいテーブルを再作成する場合DataSource
:古いテーブル列がまだ存在するのはなぜですか?
ここで発言権を維持する唯一の要素は要素です。新しいデータソース列を読み取るようにグリッドに指示するにはどうすればよいですか(他のすべてが正しく読み取られます)。
(2つの異なる要素を作成すると、両方とも適切に入力されますが、1つの要素を保持し、要素テーブルをdestroyとreinitで置き換えます)
おそらくこれは、グリッドコンテナ内のコンテンツをクリアしていないことが原因です。例えば
$('#gridName').data().kendoGrid.destroy();
$('#gridName').empty();
またはより短い構文
$('#gridName').kendoGrid('destroy').empty();
他の方法では、グリッドは残っている古いhtmlを考慮に入れます-グリッドはここのようにテーブルから初期化できることを忘れないでください。
Peter Subevの答えの最後の部分を明確にしたいと思います。それは、私を助けてくれたからです。
「グリッドはここのようにテーブルから初期化できることを忘れないでください」
これは、HTMLで<table>
タグではなくタグを使用したことを示しています<div>
。タグを使用する<table>
と、グリッドテーブルデータがグリッド列から分離されるため、$('#gridName')。kendoGrid('destroy')。empty()を実行すると、テーブルデータのみが破棄/空になり、列情報は破棄されません。
HTML<table>
タグをタグに切り替えて<div>
、目的の結果を取得します。
私はAngularフレームワークで作業していますが、新しいdataSourceと新しい列でKendoグリッドを再起動できないようです。2番目のグリッドの初期化では何も機能しません。私はもう試した:
if (vm.mainHierGrid != null) {
//vm.mainHierGrid.data().kendoGrid.destroy();
$('#mainGrid').data().kendoGrid.destroy();
//$('#mainGrid').empty();
vm.mainHierGrid.destroy();
}
剣道グリッドを破壊して再バインドする
if ($('#kgCopyEntityGrid').hasClass("k-grid")) {
$('#kgCopyEntityGrid').kendoGrid('destroy').empty();
}
var kgCopyGrid = $("#kgCopyEntityGrid").kendoGrid({
// your code here
}).data("kendoGrid");