我在magento中使用网格来显示表格的内容。这个表有一个位置列,我根据那里的值对内容进行排序 此位置列在网格中显示为类型输入:
$this->addColumn('position', array(
'header' => Mage::helper('postcard')->__('Position'),
'align' =>'left',
'index' => 'position',
'type' => 'input',
'width' => '100',
'sortable' => true,
));
如何为所有行提交这些列的值?我尝试使用批量操作,但只提交所选行的ID而不是位置列。还有其他办法吗?
答案 0 :(得分:2)
请尝试使用以下代码
$this->addColumn('position', array(
'header' => Mage::helper('postcard')->__('Position'),
'align' =>'left',
'index' => 'position',
'type' => 'number',
'width' => '1',
'sortable' => true,
'editable' => true
));
答案 1 :(得分:1)
答案 2 :(得分:0)
在您的网格列中尝试以下
$this->addColumn('position', array(
'header' => Mage::helper('postcard')->__('Position'),
'align' =>'left',
'index' => 'position',
'type' => 'input',
'width' => '100',
'sortable' => true,
'editable' => 'true',
'inline_css' => "my-grid-input-text", // use this class to adjust input width using CSS
));
您的输入将是可编辑的,但您无法发布此值。 要发布您的可编辑值,请在javasctipt下面添加以覆盖默认函数
varienGridMassaction.prototype.apply = function() {
if(varienStringArray.count(this.checkedString) == 0) {
alert(this.errorText);
return;
}
var item = this.getSelectedItem();
if(!item) {
this.validator.validate();
return;
}
this.currentItem = item;
var fieldName = (item.field ? item.field : this.formFieldName);
var fieldsHtml = '';
if(this.currentItem.confirm && !window.confirm(this.currentItem.confirm)) {
return;
}
this.formHiddens.update('');
new Insertion.Bottom(this.formHiddens, this.fieldTemplate.evaluate({name: fieldName, value: this.checkedString}));
new Insertion.Bottom(this.formHiddens, this.fieldTemplate.evaluate({name: 'massaction_prepare_key', value: fieldName}));
// collect all inputs of grid to post it
new Insertion.Bottom(this.formHiddens, this.fieldTemplate.evaluate({name: 'form_inputs', value: Form.serializeElements($$('#'+this.grid.containerId + ' .grid input'))}));
if(!this.validator.validate()) {
return;
}
if(this.useAjax && item.url) {
new Ajax.Request(item.url, {
'method': 'post',
'parameters': this.form.serialize(true),
'onComplete': this.onMassactionComplete.bind(this)
});
} else if(item.url) {
if(item.target) {
switch(item.target){
case '_blank':
this.form.target = '_blank';
break;
default:
this.form.target = '';
break;
}
}
this.form.action = item.url;
this.form.submit();
this.form.target = '';
}
};
并在控制器文件中获取输入
$postData = $this->getRequest()->getParams();
if(isset($postData['form_inputs'])) {
parse_str($postData['form_inputs'],$formInputs);
echo "<pre>";
print_r($formInputs);
}