我需要一個下拉的劍道的UI格柵,和整個這個例子就是: http://codepen.io/jordanilchev/pen/cnkih?editors=001下拉劍道UI電網
但在這個例子中,兩個鍵和上下都包含了下降的顯示文本在網格的數據源中也是如此,這看起來非常冗餘。我在Telerik的網站上查看了一個類似的例子,在那裏也是一樣。
這裏是該類型下拉數據源:
var types = [
{
"Type": "FB",
"Name": "Facebook"
},
{
"Type": "TW",
"Name": "Twitter"
},
{
"Type": "YT",
"Name": "YouTube"
},
{
"Type": "PI",
"Name": "Pinterest"
}
];
到目前爲止好。但這裏是實際網格中的數據 - 注意如何它還包含兩個型號及名稱的每一條記錄:
var products = [{
"ProductID": 1,
"ProductName": "Chai",
"Type": {
"Type": "FB",
"Name": "Facebook"
}
}, {
"ProductID": 2,
"ProductName": "Chang",
"Type": {
"Type": "FB",
"Name": "Facebook"
}
}...
果然不出我所料的是,只有類型必須是網格的數據源 - 這樣的:
var products = [{
"ProductID": 1,
"ProductName": "Chai",
"Type": "FB",
}, {
"ProductID": 2,
"ProductName": "Chang",
"Type": "FB",
}...
有一種使用在劍道UI格下拉,而不必同時包括密鑰和網格的數據源中每個記錄顯示文本的方法嗎?換句話說,網格會知道引用下拉的數據源以獲取單元格的顯示文本。
更新2014年9月23日: 通過CodingWithSpike提出的解決方案正常工作時下拉的數據源是一個硬編碼/本地陣列,但我有得到它的工作在加載數據時的困難從服務器上下載。這個問題似乎是在下拉數據源被讀取之前,網格被初始化。
要「模擬」的$ HTTP調用來填充該數據源中,我使用的setTimeout:
$(document).ready(function() {
var categories = [];
setTimeout(function() {
categories = [{
"value": 1,
"text": "Beverages"
},{
"value": 2,
"text": "Condiments"
},{
"value": 3,
"text": "Confections"
}];
$('#grid').data('kendoGrid').dataSource.read(); // Just as a test, but not even this helps
$('#grid').data('kendoGrid').refresh(); // Just as a test, but not even this helps
}, 1000);
當數據被加載爲高於(或經由$ HTTP),下拉字段現在包含值(id)而不是文本。這裏是顯示這個plunker: http://plnkr.co/edit/DWaaHGVAS6YuDcqTXPL8?p=preview
注意,真正的應用程序是一個AngularJs應用程序,我寧可不使用一些jQuery的本事等到下拉數據是可用的,然後創建網格元素。
如何從服務器獲取數據?
這是有道理的(並且似乎工作),但我有一個問題:它是如何知道使用的價值和顯示文本的下拉哪個領域?是否按照約定,在下拉數據源中必須有一個名爲「value」的字段和一個名爲「text」的字段?這裏是我測試你的解決方案的蹲點:http://plnkr.co/edit/DWaaHGVAS6YuDcqTXPL8?p=preview – Lars335 2014-09-23 04:02:46
是的,'value'和'text'按慣例使用。我不確定是否有辦法改變這種情況,而無需通過劍道來源進行篩選。 – CodingWithSpike 2014-09-23 12:48:35
我嘗試實施您的解決方案,但在從服務器加載下拉數據時遇到了問題。我編輯了我的問題以包含更多數據。也許你可以再傳授一些你的智慧? – Lars335 2014-09-23 18:09:41