【Ext3.1.1】从2.2升级3.1时的几个问题

        最近组里的项目要升级,旧有页面当然也要随之改造。原来的页面是Ext2.X写的,现在要求全部变成Ext3.1版本。

        用Ext的时间不是很长,大概三四个月这样,原来以为只要改一下Ext的引用路径就OK了,事实上大部分页面也确实是这样,但还是有一些页面不能换个引用就了事,特在此记录一下,防止自己忘记。【注:服务器系统是SUSE Linux Enterprise Server 10 (x86_64),本地机是XP_sp3,浏览器是IE8。】

        第一个是样式问题,不知道为什么我换成3.1后,DateField、ComboBox的按钮样式莫名异常,看上去像凹下去的,不是凸出来的,更奇怪的是只在服务器上测试时有这问题,把页面下载到本地浏览却是正常的。之后加了下面那行代码就正常了,原因没搞懂。

发现一个问题:EXT3.1我用的公司自己定制过的版本,跟官方版可能不一样。

Ext.onReady(function(){
    Ext.BLANK_IMAGE_URL='js/ext311/resources/images/default/s.gif'; //加这行,否则样式异常
    //其它代码省略
})

 

异常样式:

正常样式:

 

 

 

        第二个是问题是TreePanel。我换成3.1后页面加载不出树,查了很久才发现是JSON字符串里nodeType属性的值不对导致无法加载。在官方示例tree\render.html中,TreePanle的root定义里用了 nodeType: 'async',估计跟这个有关系,而我们后台返回的JSON里为 nodeType:2 ,因为没用到这个属性,就把JSON中的nodeType:2删除了,之后树正常加载。

[
    {
        "id":"10137",
        "text":"节点1",
        "leaf":true,
        "nodeType":2  //罪魁祸首
    },{
        "id":"10133",
        "text":"节点2",
        "leaf":true,
        "nodeType":2  //罪魁祸首
    }
]

 

 

        第三个是Store在load时加载参数的问题。在换成3.1时,发现GridPanel加载出来的数据一直不对,查了后台日志,发现SQL的查询条件跟原来不一样了,然后排查了很久才发现,前台传的参数有问题,可是前台页面我只是改了Ext的引用,其它代码根本就没动过,为什么突然就不一样了?又查了很久,才发现Store.load()时带的参数值不对,修改后数据正确显示。页面代码里我有在beforeload事件里用Ext.apply()修正参数的值,2.2传递了Ext.apply()修改后的参数,而3.1却传递了load()带的参数的值,看来原因是Ext.apply()在3.1里不能修改参数的值。但依然可以添加,我在Ext.apply()带了四个参数,load()里只有一个参数,结果另外三个参数也传递了,只剩下那个值错误的参数是用load(),而没用Ext.apply()的。

store.on('beforedload',function(){
    Ext.apply(this.baseParams,
        {
            one: 1,
            two: 2,
            three: 3,
            four: 4
        });
});

store.load(
    {params: {four: '四'}}  //2.2中four到后台时值为'4',3.1中值为'四'
);

 

        第四个不算EXT的问题,但是也挺让人恼火的。2.2中FormPanel明明没有standardSubmit配置项,结果不知道以前哪个家伙写了一个在里面,搞得我换3.1后死活提交不了数据,还浪费我时间去查。估计那家伙是复制网上的配置,要不怎么会把2.2没有的配置项也搞进去。

你可能感兴趣的:(ext,store,TreePanel)