2015-04-28 50 views

回答

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]); 
     } 
    } 
} 

colModel定義"sex"列像

{name: "sex", width: 50} 

您將在the answerthis one找到有關該方案的更多細節。您可以擴展返回服務器的信息。在這種情況下,您可能需要另外撥打setColWidthsetLabel以動態應用列寬和列標題的文本。