Extjs 專案中常用的小技巧,也許你用得著(5)--設定 Ext.data.Store 傳參的請求方式
阿新 • • 發佈:2022-05-02
1.extjs 給怎麼給panel設背景色
設定bodyStyle:'background:#ffc;padding:10px;',
var resultsPanel = Ext.create('Ext.panel.Panel', { title: 'Results', width: 600, height: 400, renderTo: Ext.getBody(), bodyStyle: 'background:#ffc; padding:10px;', layout: { type: 'vbox', // Arrange child items vertically align: 'stretch', // Each takes up full width padding: 5 }, items: [{ // Results grid specified as a config object with an xtype of 'grid' xtype: 'grid', columns: [{header: 'Column One'}], // One header just for show. There's no data, store: Ext.create('Ext.data.ArrayStore', {}), // A dummy empty data store flex: 1 // Use 1/3 of Container's height (hint to Box layout) }, { xtype: 'splitter' // A splitter between the two child items }, { // Details Panel specified as a config object (no xtype defaults to 'panel'). title: 'Details', bodyPadding: 10, items: [{ fieldLabel: 'Data item', xtype: 'textfield' }], // An array of form fields flex: 2 // Use 2/3 of Container's height (hint to Box layout) }] });
2. Extjs4.0 設定 Ext.data.Store 傳參的請求方式
var Store = Ext.create('Ext.data.Store', { pageSize: pageSize, model: 'Ext.data.Model名稱', autoLoad: false, proxy: { type: 'ajax', url: '請求路徑', getMethod: function(){ return 'POST'; },//亮點,設定請求方式,預設為GET reader: { type: 'json', root: 'Data', totalProperty: 'totalCount' } }, listeners: { 'beforeload': function (store, op, options) { var params = { //引數 }; Ext.apply(store.proxy.extraParams, params); } } });
3.ExtJS grid 帶引數查詢分頁 store 傳額外引數解決辦法
在store的beforeload事件裡面重寫store.proxy.extraParams,新增新引數
就不必每次都手動的新增引數
store.on('beforeload', function (store, options) { var new_params = { name: Ext.getCmp('search').getValue() }; Ext.apply(store.proxy.extraParams, new_params); // alert('beforeload'); }); 在Extjs3 中的 store.on('beforeload', function () { store.baseParams = { name: '5555555', intss: '666666666' }; });
下面給出完整的程式碼。原理很簡單,將搜尋條件放在store的baseParams中,每次載入都賦值。
只是需要強制賦值,因為預設的pagetoolbar只會把start、limit、page、sort、dir傳遞給store。
var store = new Ext.data.Store({
pageSize: GridPageSize,
model: 'Master',
autoLoad: false,
proxy: {
type: 'ajax',
url: '/master/GetMasterData',
reader: {
type: 'json',
root: 'data',
totalProperty: 'totalCount'
}
},
fields: [
{ name: 'Id' },
{ name: 'Master_Name' }
//排序
sorters: [{
property: 'Master_Name',
direction: 'DESC'
}]
});
store.on('beforeload', function (store, options) {
var new_params = { name: Ext.getCmp('search').getValue() };
Ext.apply(store.proxy.extraParams, new_params);
// alert('beforeload');
});
store.load({
params: { start: 0, limit: GridPageSize }
})