free jqgrid 4.8.0 colModel editoptions - 来自查询的动态值

时间:2015-04-28 19:06:55

标签: jqgrid

我正在使用Coldfusion和jqgrid。

有没有办法从查询结果中动态填充colModel editoptions?

1 个答案:

答案 0 :(得分:0)

如果您需要动态设置1:female;2:male之类的选项,那么我认为您使用指定列中包含1或2的数据填充网格。因此,您必须使用formatter: "select"(请参阅the documentation)。因此,您应该能够设置如下所示的属性

{name: "sex", formatter: "select", editoptions: { value: "1:female;2:male" }}

如果您需要动态设置此类选项,则需要从服务器加载有关editoptions.value的信息。

您可以使用的最本机回调是beforeProcessing。回调将在之前处理将使用格式化程序显示从服务器返回的数据。因此,可以对formatoptionseditoptions进行任何更改。

如果服务器响应现在看起来像

{
    "rows": [
        {"id": 123, "name": "John", "sex": "2"},
        {"id": 456, "name": "Mary", "sex": "1"}
    ]
}

然后您可以将服务器响应的数据扩展到以下

{
    "rows": [
        {"id": 123, "name": "John", "sex": "2"},
        {"id": 456, "name": "Mary", "sex": "1"}
    ],
    "colModelExtentions": {
        "sex": {"formatter": "select", "editoptions": {"value": "1:female;2:male"}}
    }
}

您可以直接在服务器响应中指定colModel的特定项目的某些更改。处理此类数据的beforeProcessing回调的实现看起来像

beforeProcessing: function (data) {
    var cmName, cmExt = data.colModelExtentions, $self = $(this),
        p = $self.jqGrid("getGridParam");
    for (cmName in cmExt) {
        // enumerate properties of colModelExtentions like sex
        if (cmExt.hasOwnProperties(cmName)) {
            $self.jqGrid("setColProp", cmName, cmExt[cmName]);
        }
    }
}

并定义"sex"中的colModel

{name: "sex", width: 50}

您可以在the answerthis one中找到有关该方案的更多详细信息。您可以扩展返回服务器的信息。如果您需要另外调用setColWidthsetLabel,则动态应用列宽和列标题文本。