向现有JQ GRID添加新列

时间:2014-07-30 08:18:01

标签: jquery jqgrid jqgrid-php mvcjqgrid

我正在研究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中的更改吗?

名称,状态,付款等变量来自数据库。

提前感谢您的帮助。

1 个答案:

答案 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 c2c3,...作为列。在这种方式中,您可以在运行时轻松修改jsonmap的值。您可以设置hidden: true属性或将其删除等。The answer显示如何根据服务器响应使用beforeProcessing修改colModel。这样你就可以让jqGrid充满动力。