我添加了一个功能类似于相关产品的选项卡,我添加了一个带有如下下拉列表的列:
$this->addColumn('mycolumn', array(
'name' => 'mycolumn',
'header' => Mage::helper('catalog')->__('Display on current child page'),
'index' => 'mycolumn',
'type' => 'select',
'width' => '1',
'align' => 'center',
'options' => array(
1 => Mage::helper('catalog')->__('Yes'),
0 => Mage::helper('catalog')->__('No'),
),
'editable' => true
));
每次我更改选择时,我的产品都会被取消选中并且该行被禁用。
我发现这一行在 magento 中有注释:
bindFieldsChange : function(){
if (!$(this.containerId)) {
return;
}
---> // var dataElements = $(this.containerId+this.tableSufix).down('.data tbody').select('input', 'select');
var dataElements = $(this.containerId+this.tableSufix).down('tbody').select('input', 'select');
for(var i=0; i<dataElements.length;i++){
Event.observe(dataElements[i], 'change', dataElements[i].setHasChanges.bind(dataElements[i]));
}
}
我在 js/mage/adminhtml/grid.js 中找到了这段代码。当我取消注释这条线时,我的下拉菜单就像一个魅力......
我有两个关于这个问题的问题,第一个问题是取消注释是否安全(Magento 一定有理由改变这个)。
我的第二个问题是如何在不调整 grid.js 文件的情况下避免这种行为。我不喜欢以任何方式编辑核心文件,但无法弄清楚如何重写此功能或如何以行为不适用的方式添加我的列。