Autor | Zpráva | ||
---|---|---|---|
Yippee Profil * |
#1 · Zasláno: 11. 4. 2005, 09:39:54
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 * |
#2 · Zasláno: 11. 4. 2005, 18:47:43
|
||
Yippee Profil * |
#3 · Zasláno: 12. 4. 2005, 12:56:59
Děkuji, ale tohle řazení není podle českých pravidel.
česká abeceda je: a,á,b,c,č ............. |
||
Yippe Profil * |
#4 · Zasláno: 13. 4. 2005, 15:11:16
Víte někdo jak na to?
|
||
OBr Profil * |
#5 · Zasláno: 15. 4. 2005, 10:14:40
...jedině ručně a otrocky třídit :-(
|
||
Časová prodleva: 10 měsíců
|
|||
HouMr. Profil * |
#6 · Zasláno: 23. 2. 2006, 22:38:05
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!!! |
||
Časová prodleva: 28 dní
|
|||
HouMr. Profil * |
#7 · Zasláno: 23. 3. 2006, 20:18:26
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(); |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0