hexawing
hexawing
2011-08-07 13:03

ExtJS 4.0自带的插件itemselector的store,值如何动态改变啊?

已采纳

[code="java"] items: [{
fieldLabel: 'keyword',
listeners:{
change: function(textfield, value){//我的意图是,这个值变的时候,在下面列表里刷新product_store,达到筛选的目的,但store是刷新了,但itemselector左边框框里没有变过来
product_store.load({
params: {
query: "37"
}
});
}
}
},{
fieldLabel: 'product list',
name: 'products_ids',
id: 'products_ids',
xtype: 'itemselector',
allowBlank: false,
store: product_store,
displayField: 'model',
valueField: 'id',
hideNavIcons: true,
msgTarget: 'side'
}], [/code]

程序开始的时候用autoLoad可以让itemselector左边框框里有初始值:
[code="java"]var product_store = Ext.create('Ext.data.Store', {
model: 'Product',
storeId: 'AllProduct',
autoLoad: {
params: {
query: "670"
}
}
}); [/code]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • myShow0001 失去乐山贼 10年前
    点赞 评论 复制链接分享
  • gfek2004 gfek2004 9年前

    我也遇到了这个问题,已经解决了!修改了一些itemSelector.js的代码:

    在 53 行 注释掉 me.bindStore(me.store);
    [code="java"]
    initComponent: function() {
    var me = this;

        me.ddGroup = me.id + '-dd';
        me.callParent();
    
        // bindStore must be called after the fromField has been created because
        // it copies records from our configured Store into the fromField's Store
       // me.bindStore(me.store);
    }
    

    [/code]

    将56行修改成
    [code="java"]
    createList: function(title, isStore){
    var me = this;

        if(isStore) {
            store = me.store;
        } else {
            store = {
               model: me.store.model,
               data: []
            };
        }
    
        return Ext.create('Ext.ux.form.MultiSelect', {
            submitValue: false,
            flex: 1,
            dragGroup: me.ddGroup,
            dropGroup: me.ddGroup,
            title: title,
            store: store,
            displayField: me.displayField,
            disabled: me.disabled,
            listeners: {
                boundList: {
                    scope: me,
                    itemdblclick: me.onItemDblClick,
                    drop: me.syncValue
                }
            }
        });
    },
    

    [/code]

    将 87 行代码修改成
    [code="java"]
    setupItems: function() {
    var me = this;

        me.fromField = me.createList(me.fromTitle, true);
        me.toField = me.createList(me.toTitle, false);
        ....
    

    })
    [/code]

    之后外面直接

    itemSeletor.store.load()就ok了!

    点赞 评论 复制链接分享
  • renpeng301 renpeng301 10年前

    8) 哦 明白了 你的意思,available的数据,根据关键字动态改变?
    解决了??

    点赞 评论 复制链接分享
  • renpeng301 renpeng301 10年前

    :P 贴个图吧?然后描述下啊

    点赞 评论 复制链接分享
  • dingpeng741 dingpeng741 8年前

    用 bindStore方法添加store

    点赞 评论 复制链接分享

相关推荐