2012-08-16 58 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); 
} 

这真的感觉像一个黑客我错过了什么?

斯科特