2013-01-17 86 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