ContentPanels を追加する TabContainer があります。私の要件は、このTabContainer(ContentPanelsの異なるコンテンツ)を毎回リロードし、グリッドの新しい行(同じページのajaxから生成されたもの)をクリックすることです。最初に、id が既に登録されているという問題が発生したとき、こちらの回答の 1 つに示されているように、destroyRecursive を使用しました。今、それを使用した後、次の結果が得られます。
最初に行のいずれかをクリックした後の結果: コンテナーと 3 つのコンテンツ ペインを使用した方法と同じです。
いずれかの行、2 回目、およびその他の回数をクリックした後の結果: 3 つのコンテンツ ペインを持つ新しいコンテナーが、3 つのコンテンツ ペインを持つ古いコンテナーの上に配置されます。何行クリックしても、結果には常に 2 つのコンテナーがあり、新しいコンテナーは古いコンテナーの上に配置されます。
以下は、私が使用したコードです。
<div id = "tabsContainer">
<div id="tabPanels" data-dojo-type = "dijit/layout/TabContainer"></div>
</div>
function getTabPanelsForTheRow() {
require(["dijit/layout/TabContainer",
"dijit/layout/ContentPane"], function (TabContainer, ContentPane) {
var tc = new TabContainer({}, "tabPanels");
var cp1 = new ContentPane({
title: "Contacts",
content: "These are the activities"
});
tc.addChild(cp1);
var cp2 = new ContentPane({
title: "Activities",
content: "These are the activities"
});
tc.addChild(cp2);
var cp3 = new ContentPane({
title: "Opportunities",
content: "We are known for our drinks."
});
tc.addChild(cp3);
tc.startup();
});
}
function destroyTabPanel() {
require(["dijit/layout/TabContainer"], function (TabContainer) {
var tp = dijit.byId("tabPanels");
tp.destroyRecursive(true);
});
}
行をクリックするたびに、最初に destroyTabPanel() を呼び出し、次に getTabPanelsForTheRow() を呼び出します。