2013-12-10 15 views
14

Mam tablicę obiektów dostarczanych z usługi WebService (kolejność na liście jest ważna). Załadowałem obiekt JSON do formantu Wybierz, ale ponownie zamawia listę bez użycia kolejności obiektu.Zapobieganie Wybierz automatyczne sortowanie

To jest łącze bieżącego problemu.

$('#testSelect').selectize({ 
    maxItems: 1, 
    valueField: 'Id', 
    labelField: 'Descripcion', 
    searchField: 'Descripcion', 
    options: data 
}); 

Fiddle tutaj: http://jsfiddle.net/LYYab/

mam wyłączona 'sortField', ale to nie działa.

Każda pomoc zostanie bardzo doceniona.

Dzięki.

+0

Zakładam, że masz na myśli domyślną kolejność przy pierwszym opuszczaniu? Zamiast raz wszedłeś do czegoś w pudełku? Po dokonaniu edycji coś będzie sortować "najlepsze" mecze. Niestety nie jestem pewien, czy można to zrobić, ponieważ nie jest to tym, dla czego służy Selectize. – SpaceDog

+0

To znaczy, że dropwdown shoul być coś takiego: - Todos - Armtas - Comtrek - Earthwax - Flotonic To postanowienie obiekt JSON. – eliashdezr

+1

AKTUALIZACJA: Jedno proste rozwiązanie w tym przypadku: Dodaj odstępy przed słowem Chcę być na górze. – eliashdezr

Odpowiedz

8

Z jakiegoś powodu założyłem, że nie masz dostępu do danych, zanim został przekazany do Wybierz. Jeśli nie można po prostu dodać indeks sortowania:

var currentSortId = 0;  
$.each(data, function(i, v) { 
    currentSortId = currentSortId + 1; // First ID is 1! 
    v.sId = currentSortId; 
}); 

a następnie odwoływać się, że w opcjach Selectize z sortField: 'sId'.

Fiddle here

Oczywiście, że działa tylko aż wpisze w polu tekstowym, a następnie kolejność jest oparty na tym, co jest „najlepsze dopasowanie” dla texted wpisane. Jeśli zachowujesz porządek, gdy ktoś pisze, musisz zdefiniować własną funkcję score - potrzebujesz funkcji, która zwraca funkcję. Funkcja wewnętrzna i zajmuje pozycję i aktualne zapytanie i musi zwrócić sId zachować kolejność, jeśli element pasuje, inaczej zwraca 0.

Zobacz score pod callbacków w documentation.

+1

Z jakiegoś powodu domyślne sortowanie selectize, które ma być alfabetyczne, losowo umieścić niektóre elementy góry, które nie odpowiadają porządkowi alfabetycznemu, który można by oczekiwać. To rozwiązało problem dla mnie. – Mahn

10

Twój sortField mógłby wyglądać następująco:

sortField: [{field: 'Descripcion', direction: 'desc'}, {field: '$score'}] 

Upewnij się, że nadpisane sortField zawiera specjalną $score pole. W przeciwnym razie, zgodnie z dokumentacją, zostanie ona dodana przed wszystkimi innymi polami, skutecznie zastępując dostarczone zamówienie.

+0

Pozdrowienia @mrt zrobić mój dzień ten fragment! – fearis

Powiązane problemy