Telerik の KendoUI を使用した複数レベルのツリービューがあり、並べ替えられたノードのブランチの正しい ID を取得しようとしています。
<ul id="root">
<li>Item 1 (1)<input type="hidden" name="PresetItemId" value="1" />
<ul>
<li>Item 1.1 (5)<input type="hidden" name="PresetItemId" value="5" /></li>
<li>Item 1.2 (6)<input type="hidden" name="PresetItemId" value="6" />
<ul>
<li>Item 1.2.1 (11)<input type="hidden" name="PresetItemId" value="11" /></li>
<li>Item 1.2.2 (12)<input type="hidden" name="PresetItemId" value="12" /></li>
</ul>
</li>
</ul>
</li>
<li>Item 2 (2)<input type="hidden" name="PresetItemId" value="2" />
<ul>
<li>Item 2.1 (7)<input type="hidden" name="PresetItemId" value="7" />
<ul>
<li>Item 2.1.1 (13)<input type="hidden" name="PresetItemId" value="13" />
<ul>
<li>Item 2.1.1.1 (18)<input type="hidden" name="PresetItemId" value="18" /></li>
</ul>
</li>
<li>Item 2.1.2 (14)<input type="hidden" name="PresetItemId" value="14" /></li>
</ul>
</li>
<li>Item 2.2 (8)<input type="hidden" name="PresetItemId" value="8" />
<ul>
<li>Item 2.2.1 (15)<input type="hidden" name="PresetItemId" value="15" /></li>
</ul>
</li>
<li>Item 2.3 (27)<input type="hidden" name="PresetItemId" value="27" /></li>
</ul>
</li>
<li>Item 3 (3)<input type="hidden" name="PresetItemId" value="3" />
<ul>
<li>Item 3.1 (9)<input type="hidden" name="PresetItemId" value="9" />
<ul>
<li>Item 3.1.1 (16)<input type="hidden" name="PresetItemId" value="16" /></li>
</ul>
</li>
<li>Item 3.2 (10)<input type="hidden" name="PresetItemId" value="10" />
<ul>
<li>Item.3.2.1 (23)<input type="hidden" name="PresetItemId" value="23" /></li>
</ul>
</li>
<li>Item 3.3 (19)<input type="hidden" name="PresetItemId" value="19" />
<ul>
<li>Item.3.3.1 (24)<input type="hidden" name="PresetItemId" value="24" /></li>
</ul>
</li>
<li>Item 3.4 (20)<input type="hidden" name="PresetItemId" value="20" />
<ul>
<li>Item.3.4.1 (25)<input type="hidden" name="PresetItemId" value="25" /></li>
</ul>
</li>
<li>Item 3.5 (21)<input type="hidden" name="PresetItemId" value="21" />
<ul>
<li>Item.3.5.1 (28)<input type="hidden" name="PresetItemId" value="28" /></li>
</ul>
</li>
<li>Item 3.6 (22)<input type="hidden" name="PresetItemId" value="22" />
<ul>
<li>Item.3.6.1 (26)<input type="hidden" name="PresetItemId" value="26" /></li>
</ul>
</li>
</ul>
</li>
<li>Item 4 (4)<input type="hidden" name="PresetItemId" value="4" /></li>
</ul>
私の考えでは、各親には子が含まれており、それらの子は TreeView の他のブランチから独立して並べ替えられています。
したがって、ノードがドロップされたブランチのすべての兄弟を取得し、ノードがソートされているときにそのブランチ レベルのみの ID を取得する必要があります。これらのノードのいずれかに子がある場合、その子が Id コレクションの一部になることは望ましくありません。
多少は機能していますが、すべての兄弟 (正しい) だけでなく、それらの兄弟のすべての子 (正しくない) も返します。
var treeview;
function onTreeViewDragEnd(e){
var console = $("#console");
//alert("source: " + treeview.text(e.sourceNode));
//alert("destination: " + treeview.text(e.destinationNode));
var list = $(e.destinationNode).siblings().not($(this).children());
var data = $("input", list).serialize();
console.html(JSON.stringify(data));
}
treeview = $("#root").kendoTreeView({
dragAndDrop : true,
dragend: onTreeViewDragEnd
}).data("kendoTreeView");
私はこれでjsfiddleを始めました: http://jsfiddle.net/kahanu/PdaRg/1/
この例を使用するには、単純にノードを展開してから、同じブランチの別の場所にドロップします。これにより、ブランチの非表示の入力値が表示されます (そして、これは私が望んでいるものではありません)。
私を正しい方向に向ける助けをいただければ幸いです。
ありがとう。