2011-12-20 58 views
0

這是可能的到顯示東西其他,但保持原始單元格值爲編輯目的?jqGrid:格式化單元格值而不更改實際(基礎)值?

我的jqGrid中的一列是'枚舉'數據。對於編輯我提供的編輯類型:選擇+編輯選項:enum-key:標籤設置,這導致正確顯示選擇編輯器。但我想顯示標籤而不是枚舉鍵爲常規視圖,而不僅僅是編輯。我知道我可以使用自定義單元格格式化但這樣會導致實際值改變,然後我不得不編輯行之前再次查找成對的標籤鍵...

回答

1

很難說沒有看到一些代碼,但你不應該需要使用自定義格式化程序,只需使用formatter: 'select'documentation所示。它明確規定:「數據應包含鍵(」1「或」2「),但數值(」One「或」Two「)將顯示在網格中。

如果您需要更多控制輸出的另一選擇是使用editoptions的buildSelect選項。例如,這裏是我在代碼中的選擇,還有其他的例子。當然,想法是你可以返回任何數據,然後根據需要操作它來構建選擇。數據事件更改函數然後確保爲輸入字段設置正確的值。

{ name: 'Id', index: 'Id', editable: true, hidden: true, 
    editoptions: { defaultValue: row_id, 
        dataUrl: "DataService.asmx/GetList", 
        buildSelect: function (data) { 
           var s = '<select>'; 
           if (data && data.d) { 
            //data is nested, so we need a few steps to get to the actual data 
            var list = data.d; 
            var opts = JSON.parse(list); 
            var subList = opts.List; 
            //loop through the data to build the options list 
            for (var i = 0, l = subList.length; i < l; i++) 
             { var ri = subList[i]; 
              s += '<option value=' + ri.Id + '>' + ri.Name + '</option>'; 
             } 
            } 
            else { 
            s+= "<option value=0>No data to display</option>"; 
            } 
            return s + "</select>"; 
          } , 
         dataEvents: [ 
           { type: 'change', 
           fn: function (e) { 
             $('input#Id').val(this.value); 
           } 
           } 
           ] 

        }, 
     editrules: {edithidden: true}, 
     edittype: 'select' 

}

+0

感謝,buildSelect可以幫助那裏:) – migajek 2011-12-20 23:11:07

相關問題