1

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

4

5 回答 5

3

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

以下代码将在“entity_id”列之后添加一个 ID 为“category_id”的列。'entity_id' 是列的 id,而不是“索引”。99/100 次都是相同的,但要注意这一点。

$this->addColumnAfter('category_id',array(
      'header' => 'Category ID',
       'index' => 'category_id',
       'type'  => 'text',
       'width' => 70
    ),
    'entity_id'
);
于 2012-12-17T22:23:25.407 回答
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');
于 2017-03-06T08:50:50.387 回答
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;
}
于 2017-03-06T10:24:23.330 回答
1

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

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

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

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

于 2018-07-25T12:28:20.230 回答
0

通过使用addColumnAfterand/oraddColumnOrder函数而不是addColumn.

于 2012-12-18T01:00:49.123 回答