{lang: 'hu'}

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! 🙂