Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ext的Ext.data.JsonStore不自动获取数据的问题记录大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

昨天在一个项目当中发现ext的JsonStore在IE的某些状况下并不能够自动后台的Action获取json数据,问题原因到现在也没有查清楚。在本机的开发环境下对外发布服务一切正常,但是部署到公司的单元测试环境后,还是有些主机通过IE无法访问(用其他的浏览器比如火狐很正常)。

这里需要记录的就是问题的部分解决,原来通过本机设置JsonStore的autoLoad为true的时候,对外发布会一部分主机IE访问不正常,而改成了手动load数据,那么通过自己的开发环境对外发布服务一切正常。

typeStore =new Ext.data.JsonStore({
autoLoad:true,
url: root+'/issueType.do?method=getTypeList',
root: 'data',
fields:['typEID','typename','typeDesc','displayOrder']
});

这是原来设置的一个JsonStore ,设置的属性autoLoad:true 让这个页面被加载的时候,自动地通过url为root+'/issueType.do?method=getTypeList' 来从后台的Action加载数据,通过解析json数据来绘制前台。也就是这个设定在一部分IE浏览器下不能够正常实现。

具体解决方法是不使用自动加载,设置为下面的方法

typeStore =new Ext.data.JsonStore({
autoLoad:false,'displayOrder']
});

然后手动的拉数据来自于另外地方调用typeStore.load();将全部的init函数贴出来

function to_init(){
Ext.QuickTips.init();

typeRecord = Ext.data.Record.create([
{name: "typEID",type: 'String'},
{name: "typename",type:'String'},
{name: "typeDesc",
{name: "displayOrder",type:'String'}
]);
typeStore =new Ext.data.JsonStore({
autoLoad:false,'displayOrder']
});

//alert(typeStore.+"-----------");

var colmodel = new Ext.grid.columnModel([
new Ext.grid.Rownumberer(),
{
header: "问题类型名称",
dataIndex:'typename',
width: 300,
sortable: true,
renderer:"htmlEncode",
editor:new Ext.form.TextField({
allowBlank:false
})
},{
header: "问题类型描述",
dataIndex:'typeDesc',
width: 400,
editor:new Ext.form.TextField({
})
},{
header: "显示顺序",
dataIndex:'displayOrder',
width: 100,
editor:new Ext.form.numberField({
allowBlank:false,
allowdecimals:false,
allownegative:false,
style:'text-align:left;'

})
},
{ header: "删除",dataIndex:'typename',width: 80,sortable: false,renderer:showdeleteUrl}
]);

typeGrid = new Ext.grid.EditorGridPanel({
id:'typeGrid',
title:'问题类型管理',
loadMask: {msg:'<bean:message bundle="common" key="js.message.loading"/>'},
trackMouSEOver:true,
StripeRows:true,
frame:true,
clicksToEdit: 1,
store: typeStore,
cm:colmodel,
iconCls:'icon_grid',

listeners:{//listeners
afteredit:function(E){//if-5
if(e.column==3){//if-4
if(!(e.record.get('displayOrder')!='0'&&e.record.get('displayOrder')=='')){//if-3
for(var i=0;i<typeStore.getCount();i++){//for-1
var rec=typeStore.getAt(i);
if(!(rec.get('displayOrder')!='0'&&rec.get('displayOrder')=='')){//if-2

//if-1 if(e.row!=i&&e.record.get('displayOrder')==rec.get('displayOrder')){ Ext.Msg.alert('<bean:message bundle="common" key="js.message.systemInfo"/>','与第【'+(i+1)+'】行显示顺序重复!'); if(e.column==3 ){ e.record.set('displayOrder',''); } break; }//if-1 }//if-2 }//for-1 }//if-3 }//if-4 }//if-5 },//listeners tbar:[{ text:'<bean:message bundle="common" key="btn.add"/>',iconCls:'icon_add',handler:function(){ var myNewRecord = new typeRecord({ typEID: '',typename: '',typeDesc:'',displayOrder:'' }); typeStore.add(myNewRecord); } }] }); mainPanel = new Ext.Panel({ layout:'border',frame:true,buttons:[ { text:'<bean:message bundle="common" key="btn.save"/>',handler:function(){ toSave(); } },{ text:'<bean:message bundle="common" key="btn.reset"/>',handler:function(){ Ext.getCmp('typeGrid').getStore().reload(); } } ],buttonAlign:'center',items:[{ region:'center',layout:'fit',autoScroll:true,items:typeGrid }] }); viewport = new Ext.Viewport({ layout:'fit',id:'viewport',items:mainPanel }); typeStore.load(); };

大佬总结

以上是大佬教程为你收集整理的ext的Ext.data.JsonStore不自动获取数据的问题记录全部内容,希望文章能够帮你解决ext的Ext.data.JsonStore不自动获取数据的问题记录所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。