我正在研究AbanteCart,其中使用JQgrid以表格形式显示订单相关信息。现在,我想在此表中添加一个新列。我到目前为止尝试的代码如下:
$grid_settings['colNames'] = array(
$this->language->get('column_order'),
$this->language->get('column_name'),
$this->language->get('column_status'),
$this->language->get('column_mode'),//Column Name that I added
$this->language->get('column_date_added'),
$this->language->get('column_total'),
);
$grid_settings['colModel'] = array(
array('name' => 'order_id',
'index' => 'order_id',
'align' => 'center',),
array('name' => 'name',
'index' => 'name',
'align' => 'center'),
array('name' => 'status',
'index' => 'status',
'align' => 'center',
'search' => false),
array('name' => 'payment',//Column data that I added
'index' => 'payment',
'align' => 'center',
'search' => false),
array('name' => 'date_added',
'index' => 'date_added',
'align' => 'center',
'search' => false),
array('name' => 'total',
'index' => 'total',
'align' => 'center'),
);
这是我编造的两个变化。但它仅显示网格中的列名称,但未向该列显示相关数据。还有什么我需要更改代码以显示JQgrid中的更改吗?
名称,状态,付款等变量来自数据库。
提前感谢您的帮助。
答案 0 :(得分:3)
了解jqGrid创建所有内部结构一次的网格非常重要。 jqGrid不提供允许添加新列的方法。所以你有以下选择:
GridUnload
将网格“销毁”回空<table>
并使用新列重新创建网格(请参阅the answer)showCol
显示隐藏列。在这种方式中,您将获得与添加列相同的效果。顺便说一下,如果在网格中加载数据的命名属性(您的JSON输入数据看起来像{"order_id":"123", "name": "abc" , "status": "OK"...}
),您可以将colModel
定义为
colModel: [
{name: "c1", key: true, jsonmap: "order_id"},
{name: "c2", jsonmap: "name"},
{name: "c3", jsonmap: "status"},
...
]
使用通用名称c1
c2
,c3
,...作为列。在这种方式中,您可以在运行时轻松修改jsonmap
的值。您可以设置hidden: true
属性或将其删除等。The answer显示如何根据服务器响应使用beforeProcessing
修改colModel
。这样你就可以让jqGrid充满动力。