2012-08-16 93 views
0

我有一個自動完成列的內聯編輯。那裏沒問題。問題是自動完成有一個需要設置的底層ID。我的想法是在網格中有一個隱藏的列,並使用自動完成的選擇回調來設置ID。回調看起來都很好。但是,當保存行時,列是空的。任何想法什麼是不設置行數據?jqgrid autocompete更改另一列

下面是相關的代碼:

{ name: 'fieldName', label: 'fieldLabel', index: 'fielindex', width: 300, 
    sortable: true, editable: true, edittype : 'custom',       
    editoptions: { 
    custom_element : someAutoComplete_element, 
    custom_value : someAutoComplete_value 
    } 
}, 
{ name:'someID', index:'someID', width: 70, hidden: true, editable: true, 
    editrules: {edithidden:false} 
}, 

function someAutoComplete_value(elem, op, value) { 
    if (op == "set") { 
     $(elem).val(value); 
     } 
     return $(elem).val(); 
} 


function someAutoComplete_element,(value, options) { 
    var $ac = $('<input type="text"/>'); 
    $ac.autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
        // Code to deal with fetching the autocomplete 
        }); 
       }, 
     select: function(event, ui) { 
       var newId = ui.item.obj.id; 

       var rowId = jQuery('#myTable').jqGrid('getGridParam','selrow'); 
       if (rowId) { 
        var rowData = jQuery('#myTable').getRowData(rowId); 
        rowData['someID'] = newId; 
       } 
      } 
      } 
     ) 
return $ac; 
} 

謝謝, 斯科特

+0

我現在有這個代替:VAR = ROWID jQuery的( '#myTable的')的jqGrid( 'getGridParam', 'selrow'); $(「#recordingsTable」)。jqGrid('setCell',rowId,'someID',newId,'',null,true);我看到列中顯示的數據。但是,保存行時,數據不再設置。 – 2012-08-16 21:49:50

回答

0

的jqGrid setCell字面上設置單元格以給定的值。如果給定的值不是HTML,那麼當我們去保存該行時,數據沒有被正確地檢索。我會期望像setCellData這樣的方法。相反,這是我爲解決我的問題所做的。在一天結束時,我所做的只是記住所選字符串的ID,以便我可以在保存時正確地將其保存在服務器端。

var newId = ui.item.obj.id;     
var rowId = jQuery('#myTable').jqGrid('getGridParam','selrow'); 

if (rowId) {      
    var rowData = jQuery('#myTable').getRowData(rowId);      
    var newCellHTML = $(rowData['utteranceID']).attr("value", newId).get(0).outerHTML;      
    $("#myTable").setCell(rowId, 'myColumnName', newCellHTML); 
} 

這真的感覺像一個黑客我錯過了什麼?

斯科特