我有一個kendo ui listview和一個模板,有條件地隱藏基於底層數據的元素。一個例子是如下:Kendo 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項目:
data[index].set('Discontinued', true);
如果索引是當前選擇的項目則該項目失去聚焦和不再被選中。
請參閱以下dojo示例http://dojo.telerik.com/UlOze,從列表中選擇一個項目,然後將其設置爲停用。
有沒有人發現這個問題的解決方案/解決方法?
謝謝。
-------------最終的解決方案--------------
從dimodi的回答繼下面我拼湊的解決方案..爲此,dataSource必須具有schema - > model - > id屬性集。
1捕獲當前選定的數據項:
var selectedItem = $(listElement).find(".k-state-selected");
var selectedDataItem = list.dataItem(selectedItem);
第二:調用.SET重新找到該數據項,並設置K-狀態選擇下課。這是因爲列表組件正在重新生成uid。
if (selectedDataItem) {
var newSelectedItem = list.dataSource.get(selectedDataItem.ProductID)
var uid = newSelectedItem.uid;
jQuery("[data-uid='" + uid + "']").addClass("k-state-selected");
}
我已經更新了原來的道場,以顯示該解決方案,櫃面它可以幫助別人。
我似乎無法得到這個解決方案的工作,當基礎數據改變時,addClass不起作用,但如果沒有任何改變,那麼它確實有效。我試着用setTimeout來看看是否有幫助,但沒有喜悅。你需要做其他事情來完成這項工作嗎? – ciantrius
原諒上面的評論。我剛剛注意到,listview正在重新生成數據源元素的uid。我已經糾正了代碼來應對這個問題,現在它可以工作。 – ciantrius