Extjs4 如何设置组合';s选项/动态存储

Extjs4 如何设置组合';s选项/动态存储,extjs4,Extjs4,我正在网格中使用它的ComponentColumn 我想为每个用户设置不同的存储 如果在一个网格中有4个用户,我想为每个用户设置不同的组合存储,这样当用户单击组合时,他将根据自己的权限看到选项,或者我将设置的存储 xtype: 'itscomponentcolumn', text : '<b>Permission</b>', width: 150, dataIndex: 'permission',

我正在网格中使用它的ComponentColumn

我想为每个用户设置不同的存储

如果在一个网格中有4个用户,我想为每个用户设置不同的组合存储,这样当用户单击组合时,他将根据自己的权限看到选项,或者我将设置的存储

xtype: 'itscomponentcolumn',
            text : '<b>Permission</b>',
            width: 150,
            dataIndex: 'permission',
            items: function(value,record) {
            return { 
                xtype: 'combobox',
                store: [[0,'View Only'], [1,'View & Edit'], [2,'View,Edit & Delete'],[3,'No Access']],
                //store:Combo_Store,
                queryMode:'local',
                displayField: 'display',
                valueField: 'value',
                name:'permission',
                forceSelection:true,
                width: 145,
                listeners: { }
xtype:'itscomponentcolumn',
文本:“权限”,
宽度:150,
数据索引:“权限”,
项目:功能(值、记录){
返回{
xtype:“组合框”,
存储:[[0,'View Only'],[1,'View&Edit'],[2,'View,Edit&Delete'],[3,'No Access'],
//商店:Combo_商店,
queryMode:“本地”,
显示字段:“显示”,
valueField:'值',
名称:'permission',
选择:对,
宽度:145,
侦听器:{}
我不能附上图片。 想象一下有5条记录的网格。 网格有两列,分别为用户名和权限 在Permission列中,我展示了combo,我在上面给出了它的代码

假设有一个vivek用户,如果他拥有仅查看权限,那么我想在vivek记录旁边的组合中仅显示视图

其他用户的也一样

我曾尝试使用bindStore设置存储,但对我无效

请告诉我怎么做

根据你的建议,我的代码如下

xtype: 'itscomponentcolumn',
            text : '<b>Permission</b>',
            width: 250,
            sortable:false,
            dataIndex: 'permission',
            items: function(value,record) {
            return { 
                xtype: 'combobox',
                store: new Ext.data.Store({
                    proxy: {
                        type: 'ajax',
                        url: comboStoreURL+"&currenetUserId="+record.get("userId"),
                        reader: {
                            type: 'json',
                            root: 'jsonStore'
                        }
                    },
                    autoLoad: true
                }),
xtype:'itscomponentcolumn',
文本:“权限”,
宽度:250,
可排序:false,
数据索引:“权限”,
项目:功能(值、记录){
返回{
xtype:“组合框”,
存储:新的Ext.data.store({
代理:{
键入:“ajax”,
url:comboStoreURL+“&CurrentUserId=“+record.get”(“userId”),
读者:{
键入:“json”,
root:'jsonStore'
}
},
自动加载:正确
}),
但我能知道为什么每次都给呼叫服务器打电话吗?我的意思是对每一条记录。我想一定有其他方法可以做到这一点,因为我在我的网格存储中有权限

我的实际网格代码是这样的

var store = Ext.create('Ext.data.Store', 
            {
                storeId: 'ShareComponentStoreId', 
                fields: ['userId','userName','permission','isProjectOwner'],
                 proxy: {
                    type: 'ajax',
                    url:strURL,
                    reader: 
                    {
                        root: 'rootShareGrid', 
                        totalProperty: 'totalCount'
                    },
                    writer: 
                    {
                        type: 'json', 
                        writeAllFields: false, 
                        allowSingle: false, 
                        encode: true, 
                        root: 'row'
                    } 
                }

            }); 


var shareGrid = Ext.create('Ext.grid.Panel', {
            id: 'ShareComponentGrId',
            enableColumnMove:false,
            store: store,
        columns: [
        {
            text: '<b>Name</b>',
            flex: 1,            
            sortable:false,
            width: 100,
            dataIndex: 'userName'
        },
        { 
            xtype: 'itscomponentcolumn',
            text : '<b>Permission</b>',
            width: 250,
            sortable:false,
            dataIndex: 'permission',
            items: function(value,record) {
            return { 
                xtype: 'combobox',
                store: new Ext.data.Store({
                    proxy: {
                        type: 'ajax',
                        url: comboStoreURL+"&currenetUserId="+record.get("userId"),
                        reader: {
                            type: 'json',
                            root: 'jsonStore'
                        }
                    },
                    autoLoad: true
                }),
                queryMode : 'local',
                displayField: 'display',
                valueField: 'value',
                name:'permission',
                forceSelection:true,
                width: 200,
var store=Ext.create('Ext.data.store',
{
storeId:'ShareComponentStoreId',
字段:['userId'、'userName'、'permission'、'isProjectOwner'],
代理:{
键入:“ajax”,
网址:strURL,
读者:
{
root:'rootShareGrid',
totalProperty:“totalCount”
},
作者:
{
键入:“json”,
writeAllFields:false,
allowSingle:false,
编码:对,
根:'行'
} 
}
}); 
var shareGrid=Ext.create('Ext.grid.Panel'{
id:'ShareComponentGrId',
enableColumnMove:false,
店:店,,
栏目:[
{
文本:“名称”,
弹性:1,
可排序:false,
宽度:100,
数据索引:“用户名”
},
{ 
xtype:'itscomponentcolumn',
文本:“权限”,
宽度:250,
可排序:false,
数据索引:“权限”,
项目:功能(值、记录){
返回{
xtype:“组合框”,
存储:新的Ext.data.store({
代理:{
键入:“ajax”,
url:comboStoreURL+“&CurrentUserId=“+record.get”(“userId”),
读者:{
键入:“json”,
root:'jsonStore'
}
},
自动加载:正确
}),
queryMode:'本地',
显示字段:“显示”,
valueField:'值',
名称:'permission',
选择:对,
宽度:200,
因此record.get('permission')具有该用户权限

我想将该权限添加到组合存储

i、 e.默认组合存储+用户权限

希望我能在这里解释清楚


请尽早回复我,当然有几种方法。
我建议使用autoLoad:true创建一个权限存储。您可以立即获取用户权限,然后在网格加载时将其提供给您的组合框。

当然有几种方法可以做到这一点。
我的建议是使用autoLoad:true设置权限存储。您可以立即获取用户权限,然后在网格加载时,该权限可用于您的组合框。

您可以向我显示执行此操作的代码吗?我已将autoLoad:true设置为我的组合。将存储定义为单独的类并设置autoLoad:true。从基于您的用户id的服务器。然后将该存储区与组合框一起使用。当您需要从组合框中选择某些内容时,数据将在那里。如果信息不足,请解释什么不起作用。您好,感谢您的帮助。我已经完成了与第一篇文章类似的操作。请查看并让我知道我所做的是对的还是错的。我在我的评论之后添加了新代码“在您的建议之后,我的代码是这样的”请建议我不要为每个记录创建新的存储实例。单独定义存储并在组合配置中引用存储。使用Ext.define('myStore',{extend:'Ext.data.store',…}和存储:'myStore'mak