jqgrid autocompete更改另一列

时间:2012-08-16 19:32:13

标签: jquery jqgrid

我有一个带有自动完成功能的列,可用于内联编辑。没问题。问题是自动完成具有需要设置的基础ID。我的想法是在网格中有一个隐藏列,并使用自动完成的选择回调来设置ID。在回调中看起来都很好。但是,当需要保存行时,列为空。是什么让行数据无法解决?

以下是相关代码:

{ 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;
}

谢谢, 斯科特

1 个答案:

答案 0 :(得分: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);
}

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

斯科特