1

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

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

提前感谢您的帮助。

4

1 回答 1

3

重要的是要了解 jqGrid 一次创建具有所有内部结构的网。jqGrid 不提供允许添加新列的方法。因此,您有以下选择:

  • 用于GridUnload将网格“销毁”为空<table>并使用新列重新创建网格(参见答案
  • 创建带有其他隐藏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属性或删除它等。答案显示了如何根据服务器响应beforeProcessing进行修改。colModel以这种方式,您可以使 jqGrid 完全动态化。

于 2014-07-30T12:57:19.903 回答