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