グリッドでそのコンポーネント列を使用しています。
ユーザーごとに異なるストアを設定したい。
グリッドに 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: { }
画像添付できません。5 つのレコードを持つグリッドがあると想像してみてください。グリッドには、user Name、Permission 列の Permission の 2 つの列があります。コンボを表示しています。このコードについては、上記で説明しました。
vivek user がいるとします。彼が表示のみの権限を持っている場合、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
}),
しかし、毎回コールサーバーを提供する理由を知ることができますか? 私はすべてのレコードを意味します。グリッドのストアで許可を得ているため、これを行うには他の方法があるに違いないと思います。
私の実際のグリッドコードはこのようなものです。
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,
したがって、record.get('permission') にはそのユーザーのアクセス許可があります。
その許可を Combo ストアに追加したいと思います。
つまり、デフォルトのコンボストア + ユーザーの許可です。
ここでうまく説明できることを願っています。
これについてはできるだけ早く返信してください