Hallo,
ich habe bisher erfolgreich in den Order/Positions zwei Spalten hinzugefügt. Auch kann ich eine Spalte mittels Editor und angebunden Store mit Inhalten befüllen. Leider komme ich aber grade nicht weiter, da ich meinem Controller noch die Artikelnummer aus der entsprechenden Zeile mitgeben muss um dann gescheite Ergebnisse liefern zu können.
Also ich muss meinem Store-Handler noch die Artikelnummer aus der Row mitliefern. Sieht bei mir jetzt wie folgt aus:
//{block name="backend/order/view/detail/position"}
{$smarty.block.parent}
Ext.define('Shopware.model.TestSources', {
extend: 'Ext.data.Model',
fields: ['id', 'description']
});
Ext.define('Shopware.store.RemoteTestSources', {
extend: 'Ext.data.Store',
alias: 'store.remote-test-sources',
model: 'Shopware.model.TestSources',
storeId: 'remote-test-sources',
proxy: {
type: 'ajax',
url: '{url controller=test action=testAction}',
reader: {
type: 'json',
root: 'data',
totalProperty: 'total'
}
}
}).create();
Ext.define('Shopware.apps.TestPlugin.view.detail.Position', {
override: 'Shopware.apps.Order.view.detail.Position',
getColumns:function (grid) {
var me = this;
var columns = me.callOverridden(arguments);
columns = Ext.Array.insert(columns, 8, [{
header: 'Spalte1',
dataIndex: 'test_field1',
renderer: me.getTESTColumnTester,
editor: {
allowBlank: true,
clicksToEdit: 1,
editable: true,
xtype: 'combo',
queryMode: 'remote',
store: {
type: 'remote-test-sources'
},
displayField: 'description',
valueField: 'description',
listeners: {
select: function () {
},
change: function(field, oldValue, newValue) {
if (typeof field.lastSelection[0] !== 'undefined') {
Ext.getCmp('test_field2_id').setValue(field.lastSelection[0].raw.inStock);
if (field.lastSelection[0].raw.id > 0) {
Ext.getCmp('testOrderButton').setDisabled(false);
} else {
Ext.getCmp('testOrderButton').setDisabled(true);
}
}
}
}
}
}]);
columns = Ext.Array.insert(columns, 9, [{
header: 'Spalte2',
dataIndex: 'test_field2',
renderer: me.getTESTColumnTesterInStock,
editor: {
xtype: 'textfield',
id: 'test_field2_id',
readOnly: true
}
}]);
return columns;
},
createGridToolbar: function() {
var me = this;
var gridToolbar = me.callParent(arguments);
gridToolbar.add(me.createMyButton());
return gridToolbar;
},
createMyButton: function() {
var me = this;
me.myButton = Ext.create('Ext.button.Button', {
iconCls: 'sprite-truck-box-label',
text: 'Blah-Button',
disabled: true,
id: 'testOrderButton',
listeners: {
click: function() {
Ext.getCmp('testOrderButton').setDisabled(false);
Shopware.Notification.createGrowlMessage('Status','Blahh....', 'testOrderButton');
}
}
});
return me.myButton;
},
/**
* Render function for the status column. The function parameter contains the status id which is used
* to get the status record of the grid status store.
* @param value
* @return string
*/
getTESTColumnTester: function(value, metaData, record) {
var test_field1 = record.get('test_field1');
return test_field1 != '' ? test_field1 : 'Mein Shop';
},
getTESTColumnTesterInStock: function (value, metaData, record) {
var test_field2 = record.get('test_field2');
return test_field2 != '' ? test_field2 : 0;
}
});
//{/block}
Würde mich sehr freuen, wenn mir da jemand auf die Sprünge helfen könnte. Ich habe schon sehr viel ausprobiert, was aber alles nicht zum Ziel geführt hat.
Viele Grüße
Andreas