Autor Zpráva
Yippee
Profil *
Potřebuji v ListBoxu setřídit obsah s českými znaky. Standardní metoda sortItemsBy, bohužel pracuje jen s anglickou znakovou sadou. Neřešil jste někdo podobný problém? Víte jak na to?
Budu vděčná za jakoukoliv pomoc.

Yippee

P.S.: data do listboxu se načítají z XML
honza
Profil *
Snad vam to pomuze
:)
Yippee
Profil *
Děkuji, ale tohle řazení není podle českých pravidel.
česká abeceda je: a,á,b,c,č .............
Yippe
Profil *
Víte někdo jak na to?
OBr
Profil *
...jedině ručně a otrocky třídit :-(
HouMr.
Profil *
Tak na tenhle problém jsem taky narazil... milé české háčky a čárky se při příkazu sortItems řadí na konec Listboxu :-( Našel by se tady nějaký zkušený "flashař"??? Jde to nějak přes příkaz SortItemsBy, musí se tam manuálně vypsat celá česká abeceda..., ale jak toho docílit??? V ActionScriptu se pohybuju jen tak tak a strašně bych ocenil, kdyby si nějaká chytrá hlavička sedla a vyřešila onu záhadu českého řazení jednou provždy! Data se do listboxu načítají "externě", takže žádné "ruční třídění" nepomůže...
Diky za cokoliv!!!
HouMr.
Profil *
A je vyřešeno! Je sice zvláštní, že odpovídám na svůj dotaz, ale když tady nebyl nikdo schopný reagovat, musel jsem se obrátit na fóra zahraniční a podařilo se mi "vyškemrat" od jednoho prima borca z Waršavy ( Peter Blazejewicz) tento kód:

import mx.controls.List;
//
//////////////////////////////////
var czechAlphabet:String = " 0123456789AÁaáBbCČcčDĎdďEÉĚeéěFfGgHhIÍiíJjKkLlMmNnOÓoóPpQqRŘrřSŠsšTŤtť UÚŮuúůVvWwXxyYÝyýZŽzž";
var czechSortCodesTable:Array;
//////////////////////////////////
var usersList:List;
var myDataProvider:Array;
//
var sortOrder:Number = 1;
///
function initApp():Void {
/// build sorting code tables based on Czech alphabet
czechSortCodesTable = new Array();
for (var i = 0; i<czechAlphabet.length; i++) {
czechSortCodesTable[czechAlphabet.charAt(i)] = i+1;
}
delete czechAlphabet;
//
myDataProvider = new Array();
myDataProvider.push({userName:"Saint-Loup-Lamairé", age:22});
myDataProvider.push({userName:"Saint-Maixent-l'École 1er Canton", age:29});
myDataProvider.push({userName:"Saint-Maixent-l'École 2e Canton", age:35});
myDataProvider.push({userName:"Échallat", age:44});
myDataProvider.push({userName:"Saint-Varent", age:44});
myDataProvider.push({userName:"Sauzé-Vaussais", age:33});
myDataProvider.push({userName:"Secondigny", age:44});
myDataProvider.push({userName:"Ébréon", age:22});
myDataProvider.push({userName:"Écuras", age:22});
myDataProvider.push({userName:"Édon", age:17});
usersList.labelField = "userName";
usersList.dataProvider = myDataProvider;
usersList.sortItems(sortCzech);
}
function sortCzech(n1:Object, n2:Object):Number {
// access "userName" in passed item as field to sort
var name1:String = n1.userName;
var name2:String = n2.userName;
var i:Number = 0;
var l:Number = name1.length;
do {
var c:Number = int(czechSortCodesTable[substring(name1, i, 1)])-int(czechSortCodesTable[substring(name2, i, 1)]);
if (c) {
return c;
}
i++;
} while (i<=l);
return 0;
}
initApp();
Toto téma je uzamčeno. Odpověď nelze zaslat.

0