Dojo是否會在MemoryStore
或可選的任何數據集合中放置用於存儲數據的任何實用程序?對MemoryStore(或任意任意數據陣列)中的數據進行排序
我需要全部數據來自MemoryStore
,但按單個evt排序。更多專欄。像Java中的Collections.sort
...
我期望Store有sort
函數,但是我在文檔中找不到任何東西。
Dojo是否會在MemoryStore
或可選的任何數據集合中放置用於存儲數據的任何實用程序?對MemoryStore(或任意任意數據陣列)中的數據進行排序
我需要全部數據來自MemoryStore
,但按單個evt排序。更多專欄。像Java中的Collections.sort
...
我期望Store有sort
函數,但是我在文檔中找不到任何東西。
的dojo/store
API允許在查詢時只,就對數據進行排序,因爲我知道。例如:
var store = new Memory({
data: [{
"firstName": "Bird",
"name": "Schultz"
}, {
"firstName": "Brittany",
"name": "Berg"
}, {
"firstName": "Haley",
"name": "Good"
}, {
"firstName": "Randolph",
"name": "Phillips"
}, {
"firstName": "Bernard",
"name": "Small"
}, {
"firstName": "Leslie",
"name": "Wynn"
}, {
"firstName": "Mercado",
"name": "Singleton"
}, {
"firstName": "Esmeralda",
"name": "Huber"
}, {
"firstName": "Juanita",
"name": "Saunders"
}, {
"firstName": "Beverly",
"name": "Clemons"
}]
});
console.log("Alphabetically by first name:");
store.query({}, {
sort: [{
attribute: "firstName",
descending: false
}]
}).forEach(function(person) {
console.log(person.firstName + " " + person.name);
});
您也可以提供多種排序屬性。
完整的示例可以在JSFiddle上找到:http://jsfiddle.net/9HtT3/
當我們對數據進行排序時,我們在存儲項目之前進行實際操作。我們採取的是保存在一個數組和使用中的Array.sort()和調用的函數SortByName內的過濾值或SortByNumbers
看起來是這樣的:
function streetsToCombobox(results){
var adress;
var values = [];
var testVals={};
var features = results.features;
require(["dojo/_base/array","dojo/store/Memory","dijit/registry","dojo/domReady!"], function(array,Memory,registry){
if (!features[0]) {
alert(noDataFound);
}
else {
array.forEach(features, function(feature, i){
adress = feature.attributes.STRASSE;
if (!testVals[adress]) {
testVals[adress] = true;
values.push({
name: adress
});
}
});
values.sort(SortByName);
var dataItems = {
identifier: 'name',
label: 'name',
items: values
};
storeStreet = new Memory({
data: dataItems
});
//fill existing Combobox ID,NAME,VALUE,SEARCHATTR,ONCHANGE,STORENAME,COMBOBOX
fillExistingCombobox(
"adrSearchSelectCB",
"adrSearchSelectCBName",
"",
"name",
getAdresses,
storeStreet,
registry.byId("adrSearchSelectCBId")
);
}
});
}
function SortByName(x,y) {
return ((x.name == y.name) ? 0 : ((x.name > y.name) ? 1 : -1));
}
也許這帶來了一些想法,你如何解決你的問題。
問候,楊千嬅