iteye_6393 2011-06-06 10:38
浏览 358
已采纳

【extjs3.2】grid重新加载jsonstore后,点击grid上的分页组件,grid不刷新

页面上有个combobox,grid,grid上有个pageToolbar用于分页。页面加载时,会将json数据加载到grid和pageToolbar里。
点击分页(此时有4页数据),grid能够正常分页显示。此时选择combobox,重新查询load store,grid和pageToolbar进行更新(此时有2页数据),点击下一页grid数据[b]没有更新显示下一页数据[/b]。附核心代码:
根据combobox加载jsonstore,更新grid
[code="javascript"]
function reload(status){
var url = String.format(queryUri + 'status.json?status={0}',status);
var comboStore = createJsonStore(fields,url);
comboStore.load(
{
params:{start:0, limit:pageSize},
callback:function(r,options,success){
if(success == true){
var isNull = comboStore.getAt(0) == null;
if(isNull){
grid.store.removeAll();
grid.getView().refresh();
}else{
grid.store = comboStore;
var pageTool = grid.getBottomToolbar();
pageTool.updateInfo();
pageTool.bindStore(grid.store);
var topTool = grid.getTopToolbar();
topTool.bindStore(grid.store);
grid.getView().refresh();
}
}else{
Ext.MessageBox.alert("查询失败");
}
}
}
);
}
[/code]

[code="javascript"]
function createJsonStore(fileds,url) {
var jsonStore = new Ext.data.JsonStore({
fields : fileds,
root : 'root',
totalProperty : 'totalCount',
remoteSort : true,
proxy : new Ext.data.ScriptTagProxy({
url : url
})
});
return jsonStore;
}

[/code]

  • 写回答

2条回答 默认 最新

  • iteye_18964 2011-06-07 09:04
    关注

    [code="js"]
    createPaging:function(pageSize,store){
    this.option={
    items:['-'],
    store:store,
    displayInfo:true,
    pageSize:pageSize,
    displayMsg:'{0}-{1}/{2}',
    emptyMsg:KQinfo.msg.notRecords
    };
    if(this.dynamicPageSize){
    var pageStore=new Ext.data.ArrayStore({
    fields:['value','text'],
    data:this.dynamicPageRecords
    });
    this.pageCombo=new Ext.form.ComboBox({
    width:60,
    mode:'local',
    editable:false,
    typeAhead:true,
    value:pageSize,
    store:pageStore,
    valueField:'value',
    displayField:'text',
    selectOnFocus:true,
    triggerAction:'all',
    forceSelection:true
    });
    this.option.items.push({xtype:'displayfield',value:KQinfo.btn.dynamicPage},this.pageCombo);
    }
    var pagingBar=new Ext.PagingToolbar(this.option);
    if(this.dynamicPageSize){
    this.pageCombo.on('select',function(combo){
    this.pageSize=combo.getValue();
    pagingBar.pageSize=this.pageSize;
    this.store.reload({params:{start:0,limit:this.pageSize}});
    },this);
    }
    this.bbar=pagingBar;
    delete this.option;
    },
    createStore:function(){
    if(Ext.isEmpty(this.storeMapping))throw 'storeMapping undefined...';
    var gridStore=new Ext.data.JsonStore({
    root:"gridRows",
    remoteSort:true,
    url:this.actionUrl,
    fields:this.storeMapping,
    totalProperty:"totalCount"
    });
    gridStore.on('loadexception',function(s,r,response){
    var status=response.status;
    if(status=='401'||status=='500'||status=='404'){
    parent.location.href=path+KQinfo.loginUrl;
    }
    },this);
    gridStore.baseParams=this.params||{};
    if(this.hasPage){
    gridStore.load({params:{start:0,limit:this.pageSize}});
    this.createPaging(this.pageSize,gridStore);
    }else{
    gridStore.load();
    }
    this.store=gridStore;
    },
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境