(園里很多文章,美名其曰 :ExtJs GridPanel+查詢條件+分頁。 但是加查詢條件后點擊下一頁,查詢條件失效,求你們自己測試明白再顯擺
不要誤導我這種新人。)
ExtJs6發布了,ExtJs4並不新鮮了,首先要說的是在5.X和6.X里關於此問題,是不是有屬性或者方法的變化我並不確定。
ExtJs4的proxy中,並沒有baseparams這個屬性,ExtJs4中變成了什么呢?
查了很多大家的中文博客也沒找到結果,最后看到一段英文:
You need to use the 'extraParams' proxy property in place of the baseParams one from Ext 3. An equivalent JsonStore in ExtJS 4 .
答案很明了,用extraParams來代替。
問題描述:
比如原有加載數據是100頁,查詢后的確顯示了7頁,點擊下一頁卻變成了100頁的第二頁。我想這一定是個非常常見的問題。
解決辦法:
給你的store的proxy加屬性
var mystore = Ext.create('Ext.data.Store', { fields: ["RoleID", "RoleName", "CreateTime", "ModifyTime", "ModifyAdmin", "DelFlag"], //"CreateAdmin" pageSize: 15, //頁容量條數據 //是否在服務端排序 (true的話,在客戶端就不能排序) remoteSort: false, remoteFilter: true, proxy: { type: 'ajax', url: "/AdminArea/AdminRole/GetRoleListJson", // //extraParams: { // showDel: $('#hiddenDelflag').val() //}, reader: { //這里的reader為數據存儲組織的地方,下面的配置是為json格式的數據,例如:[{"total":50,"rows":[{"a":"3","b":"4"}]}] type: 'json', //返回數據類型為json格式 root: 'rows', //數據 totalProperty: 'total' //數據總條數 }, extraParams: { showDel: 'true' } }, sorters: [{ //排序字段。 property: 'RoleID', //排序類型,默認為 ASC // direction: 'desc' }], autoLoad: true //即時加載數據 });
當你需要查詢或者篩選的條件為----不顯示回收站內信息----就是要
將showDel:false,刷新表格,翻頁的時候,依然不顯示回收站內信息。
如何能保留這個參數一直存在,就是以上的方法咯。
如果你看到其他文章告訴你用用baseParams,在Ext4中替換成extraParams就可以了。
擴展:
那么如何動態獲取showDel這個屬性,並且修改它。下面的代碼將會給你答案,
var proxy = mystore.getProxy(); proxy.extraParams.showDel = false; //獲取並且修改 mystore.load();
這樣一來,除非你再次改變參數,不然無論你怎樣翻頁,showDel都為false;