我正在使用Coldfusion和jqgrid。免費jqgrid 4.8.0 colModel editoptions - 來自查詢的動態值
有沒有辦法從查詢結果中動態填充colModel editoptions?
我正在使用Coldfusion和jqgrid。免費jqgrid 4.8.0 colModel editoptions - 來自查詢的動態值
有沒有辦法從查詢結果中動態填充colModel editoptions?
如果您需要動態設置1:female;2:male
這樣的選項,那麼我想您會在指定的列中填充包含1或2的數據。所以你必須使用formatter: "select"
(見the documentation)。因此,你應該能夠設置屬性,如下面
{name: "sex", formatter: "select", editoptions: { value: "1:female;2:male" }}
如果你需要動態設置這樣的選擇,要加載來自服務器的有關editoptions.value
。
您可以使用的最原始的回調是beforeProcessing
。回調將在之前處理從服務器返回的數據將使用格式化程序顯示。因此,您可以對formatoptions
或editoptions
進行任何更改。
如果服務器響應現在看起來像
{
"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]);
}
}
}
和colModel
定義"sex"
列像
{name: "sex", width: 50}
您將在the answer和this one找到有關該方案的更多細節。您可以擴展返回服務器的信息。在這種情況下,您可能需要另外撥打setColWidth
或setLabel
以動態應用列寬和列標題的文本。