什么控制网格中列的位置?

时间:2012-12-17 18:52:46

标签: magento

我已将一个客户列添加到Sales>通过扩展prepareColumns来订购网格。是什么决定了列的呈现顺序?是否可以更改列在网格上的位置?

5 个答案:

答案 0 :(得分:3)

默认情况下,列以addColumn()的调用顺序显示。您可以使用addColumnAfter()函数更改此项。

以下代码将在“entity_id”列之后添加id为“category_id”的列。 'entity_id'是列的id,而不是“index”。 99/100次这些是相同的,但要注意它。

$this->addColumnAfter('category_id',array(
      'header' => 'Category ID',
       'index' => 'category_id',
       'type'  => 'text',
       'width' => 70
    ),
    'entity_id'
);

答案 1 :(得分:1)

使用 $ this-> addColumnAfter()而不是$ this-> addColumn()

$this->addColumnAfter('customattribute', array(
      'header'=> Mage::helper('customer')->__('customattribute'),
      'index' => 'customattribute2',
      'type'  => 'options',
      'options'   => Mage::getSingleton('adminhtml/system_config_source_yesno')->toArray(),
      'width' => '100px',
), 'before_grid_id');

答案 2 :(得分:1)

$ this-> sortColumnsByOrder(); 放在_prepareColumns()函数的最后。

protected function _prepareColumns() {

    parent::_prepareColumns();

    $this->addColumnAfter('category_id', array(
        'header' => $this->__('Category ID'),
        'index' => 'entity_id',
        'type'  => 'text',
        'width' => 70
     ), 'entity_id');

   $this->addColumnAfter('name', array(
      'header' => $this->__('Category name'),
      'sortable' => true,
       'index' => 'category_name'), 'entity_id');

   $this->sortColumnsByOrder();
  return $this;
}

答案 3 :(得分:1)

恕我直言,以上所有答案都无法回答有关设置现有列顺序的问题,即无需手动添加。

例如,将“ SKU”列放在“ ID”之后,请使用以下代码:

$this->addColumnsOrder('sku', 'entity_id');

第一个参数是第二个参数中标识的列之后要插入的列的ID /名称。

答案 4 :(得分:0)

使用addColumnAfter和/或addColumnOrder函数代替addColumn