Ma (sokadszorra) futottam bele egy olyan problémába, amire az ExtJS-nek szerintem kész megoldást kéne nyújtania, de mégsem teszi. Tegyük fel, hogy van egy tree, amiben mappáink vannak felsorolva, és van egy grid, ahol a mappákban található fájlokat listázzuk. A treeben kijelölve egy elemet megjelenik a gridben a lista a fájlokkal. Előfordulhat azonban, hogy annyira sok fájl van, hogy érdemes egy lapozóval több oldalra bontani a találatok listázását. Minden eddigi feladatra az ext kész megoldást nyújt. Gondos fejlesztőként viszont ügyelnünk kell arra is, hogy a tree frissítésekor vagy a tree elem kijelölésének eltűnésekor a grid tartalma is alkalmazkodjon, azaz a gridből tűnjenek el a fájlok és a lapozó alaphelyzetbe álljon. Első lépésben próbálkozhatunk a store.removeAll();
metódussal, viszont ez nem frissíti a pager infóit. Utána jöhet a store.loadPage(1, { callback: function() { store.removeAll(); } })
azonban a pagerben szereplő értékek még mindig nem jók. Ezután (na jó, még jó pár megoldást kipróbáltam, de nem untatnálak most vele) elkezdtem átnézni az ext kódját és a következő megoldásra jutottam:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /* * 0 rekord betöltése a store-ba, így a * store totalCount property-jének értéke 0 * lesz (ez alapján számolja az oldalszámot is a pagernél) */ store.loadRecords([]); /* * Ez egy private metódus, újraszámolja a pagerben * megjelenő értékeket és frissíti a pager-t. Mivel * ez egy private metódus a használata nem feltétlenül * garantált a későbbi ExtJS verziókban, de jelenleg * ezt találtam egyetlen megoldásként a problémára. */ pager.onLoad(); |
Remélem sikerült 1-2 óra keresgéléstől megmenteni! 🙂