基礎となるデータに基づいて要素を条件付きで非表示にするテンプレートを備えた剣道UIリストビューがあります。例は次のとおりです。
<script type="text/x-kendo-template" id="template">
<div class="product">
<img src="../content/web/foods/#= ProductID #.jpg" alt="#: ProductName # image" />
<h3>#:ProductName#</h3>
<p>#:kendo.toString(UnitPrice, "c")#</p>
<div>
# if (Discontinued) { #
Discontinued Product
# } #
</div>
</div>
</script>
基礎となる dataSource 項目を変更して、次のコードで Discontinued を設定する場合:
data[index].set('Discontinued', true);
インデックスが現在選択されているアイテムである場合、そのアイテムはフォーカスを失い、選択されなくなります。
次の Dojo の例http://dojo.telerik.com/UlOzeを参照して、リストからアイテムを選択し、廃止に設定してください。
この問題の解決策/回避策を見つけた人はいますか?
ありがとう。
- - - - - - - 最終的解決 - - - - - - -
以下の dimodi の回答に続いて、ソリューションをつなぎ合わせました。これを機能させるには、dataSource に schema -> model -> id プロパティを設定する必要があります。
現在選択されているデータ項目を最初にキャプチャします。
var selectedItem = $(listElement).find(".k-state-selected");
var selectedDataItem = list.dataItem(selectedItem);
2番目: .set を呼び出した後、データ項目を再検索し、k-state-selected クラスを設定します。リスト コンポーネントが uid を再生成しているため、これは必須です。
if (selectedDataItem) {
var newSelectedItem = list.dataSource.get(selectedDataItem.ProductID)
var uid = newSelectedItem.uid;
jQuery("[data-uid='" + uid + "']").addClass("k-state-selected");
}
他の人に役立つ場合に備えて、元の道場を更新してこの解決策を示しました。