2014-07-04 36 views

回答

2

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/

1

当我们对数据进行排序时,我们在存储项目之前进行实际操作。我们采取的是保存在一个数组和使用中的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));  
} 

也许这带来了一些想法,你如何解决你的问题。

问候,杨千嬅