2013-01-17 135 views
2

我添加了一个类似的相关产品功能的选项卡禁用行,我添加了一个列有这样的下拉列表:Magento的选择字段相关产品

$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 /法师/ adminhtml/grid.js此代码。 当我取消注释此行我的下拉工作像一个魅力...

我有两个问题关于这件事,第一个将是如果这是安全的取消注释(Magento必须有一个理由来改变这一点) 。

我的第二个问题是我如何能够避免这种行为,而无需调整grid.js文件。我不喜欢以任何方式编辑corefiles,但无法弄清楚如何重写此功能或如何以行为不适用自身的方式添加我的列。

+0

你解决了这个问题吗?看来如果你取消第一行的注释,第二行会覆盖它,不是吗? – MatheusJardimB

回答

2

行单击事件使用了一个名为“openGridRow”

包括一些JavaScript与网格功能,并与一些自定义代码添加此功能,如果某些条件得到满足取消事件。 然后将复选框设置回选中。

实施例将是

function openGridRow(grid, event){ 
       var element = Event.findElement(event, 'tr'); 
       //alert(Event.element(event).tagName.toLowerCase()); 
       if(Event.element(event).type != 'checkbox'){ 
        if(['img', 'a', 'input', 'select', 'option', 'img'].indexOf(Event.element(event).tagName.toLowerCase())!=-1) { 
         // re-enable the checkbox 
         var checkbox = Element.select(element, 'input'); 
         if(checkbox[0] && !checkbox[0].disabled){ 
          grid.setCheckboxChecked(checkbox[0], true); 
         } 
         return; 
        } 
       } 
       if(element.title){ 
        setLocation(element.title); 
       } 
    }  

上面的示例将什么也不做,如果点击的元素类型是,输入,选择或选项 别的将继续按正常。

+0

不太清楚为什么你解决了这个问题,但它解决了! :) 我应该关心任何副作用吗? – MatheusJardimB