2010-07-21 66 views
2

我已經利用在Example Code at this link的jqGrid動態選擇數據

示例代碼,我已經得到了我的表格顯示在添加和編輯動態構建的選擇下拉列表。但是,當它只是在網格中顯示數據時,它會顯示下拉式索引而不是其關聯數據。有沒有辦法讓網格顯示與索引相關的數據而不是索引本身。

例如我選擇的數據可能是「0:你好; 1:世界」;編輯/添加窗口中的下拉列表顯示了Hello和World,並且它們具有正確的索引。如果單元格的值爲1,我希望它在網格中顯示World,但它顯示1。

這是該行本身,從我的網格:

{ name: 'picklist', index: 'picklist', width: 80, sortable: true, editable: true, 
    edittype: "select", formatter: "select", editrules: { required: true} }, 

我如下填充在loadComplete事件的動態數據內容:

$('#mygrid').setColProp('picklist', { editoptions: { value: picklistdata} }); 

領料單數據是「0的字符串:你好; 1:世界「類型值對。

請任何人都可以提供任何幫助。我對JQGrids相當陌生,所以請你也可以包含例子。

+0

這個問題可能會有一些幫助:http://stackoverflow.com/questions/3288521/jqgrid-value-and-text-column – 2010-07-21 14:04:04

回答

0

如果您在select元素的jqGrid IDS保存要顯示相應的textes,那麼你應該在colModel連同edittype: "select"使用formatter:'select'(見http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select)。

如果您計劃支持數據搜索,則stype: 'select'的使用對您而言可能也很有用。

+0

謝謝你的信息,但我已經試過這個。最後,我不得不重新格式化我的SQL以恢復數據而不是網格的ID。我會認爲一行select類型會使用數據源中的ID作爲select的列表中的索引,但我想它畢竟不能工作,或者它可能是動態填充的Select類型的錯誤。 – EnterpriseMonkey 2010-07-27 06:50:15

1

我知道你已經解決了這個問題,但我在我的項目中遇到了同樣的問題,並想提供我的解決方案。

首先,我爲我的選擇列(在本例中爲「用戶名」列)聲明一個自定義格式器。

$.extend($.fn.fmatter, { 
    selectuser: function(cellvalue, options, rowdata) { 
     var userdata; 
     $.ajax({ 
      url:'dropdowns/json/user', 
      async:false, 
      dataType:'json', 
      cache:true, 
      success: function(data) { 
       userdata = data; 
      } 
     }); 
     return typeof cellvalue != 'undefined' ? userdata[cellvalue] : cellvalue ; 
    } 
}); 

此格式負載可達ID和用戶的在這種情況下的映射,並返回用於特定cellvalue的用戶名。然後,我將formatter:'selectuser'選項設置爲該列的colModel,並且它可以工作。

當然,這會在網格中顯示每行一個json請求。我用的caching10秒設置爲我的JSON響應的頭,像這樣解決了這個問題:

private function set_caching($seconds_to_cache = 10) { 
    $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT"; 
    header("Expires: $ts"); 
    header("Pragma: cache"); 
    header("Cache-Control: max-age=$seconds_to_cache"); 
} 

我知道這個方案並不完美,但它是足夠我的應用程序。瀏覽器立即爲瀏覽器提供緩存命中,並且網格平穩流動。最終,我希望內置的select格式化程序將被修復以使用json數據。