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