2013-08-23 2 views
0

Я работаю над проектом с Visual Studio 2010 Asp.Net MVC4 и jqGrid. при развертывании автозаполнения, и пользователь выбирает значение, которое мне нужно скопировать значение в другую ячейку, как я могу это сделать для решения этой проблемы? Я прикрепил изображение и код. enter image description herejqGrid autocomplete, выберите значение и скопируйте значение в другую ячейку

это мой код, автозаполнение работает, как я могу скопировать значение в другую ячейку из автозаполнения?

jQuery(document).ready(function() { 
    var lastSelection; 
    jQuery("#tbFacturaCompra").jqGrid({ 
     url: '@Url.Action("DatosFacturaCompra", "raFacturaCompra", new { area = "Operacion" })', 
     editurl: '@Url.Action("DatosFacturaCompraABM", "raFacturaCompra", new { area = "Operacion" })', 
     datatype: 'json', 
     mtype: 'POST', 
     postData: { IdOrden: IdOrden, ParTipoOrden: ParTipoOrden }, 
     colNames: ['Del', 'Nit', 'Factura', 'Autorizacion', '', 'Cod. Control', 'Fecha', 'Importe', 'Estado', '', ''], 
     colModel: 
     [ 
      { name: 'ac', width: 15, formatter: 'actions', formatoptions: { keys: true, editformbutton: false, delbutton: true, editbutton: false} }, 
      { name: 'ofc_nit', index: 'ofc_nit', align: 'right', width: '50', editable: true, edittype: 'text', 
       editoptions: { 
        value : '', 
        dataInit: function (elem) { 
         value: ListarProveedores(elem); 
        } 
       } 
      }, 
      { name: 'ofc_nrofac', index: 'ofc_nrofac', align: 'right', width: '50', editable: true, edittype: 'text', editoptions: { style: "text-transform: uppercase"} }, 
      { name: 'ofc_autorizacion', index: 'ofc_autorizacion', align: 'right', width: '50', editable: true, edittype: 'text', editoptions: { style: "text-transform: uppercase"} }, 
      { name: 'ofc_alfanumerico', index: 'ofc_alfanumerico', editable: false, edittype: 'text', hidden: true }, 
      { name: 'ofc_codigocontrol', index: 'ofc_codigocontrol', align: 'right', width: '50', editable: true, edittype: 'text', editoptions: { style: "text-transform: uppercase"} }, 
      { name: 'ofc_fechafactura', index: 'ofc_fechafactura', align: 'center', width: '30', editable: true, formatter: 'date', formatoptions: { srcformat: "d-m-Y", newformat: "d/m/Y"} }, 
      { name: 'ofc_importe', index: 'ofc_importe', align: 'right', width: '25', editable: true, formatter: 'number', formatoptions: { decimalPlaces: 2} }, 
      { name: 'ofc_parestadofaccom', index: 'ofc_parestadofaccom', width: '20', editable: true, edittype: "select", editoptions: { value: "V:V;F:F"} }, 
      { name: 'ofc_partipoorden', index: 'ofc_partipoorden', editable: true, edittype: 'text', hidden: true }, 
      { name: 'ofc_idordenpago', index: 'ofc_idordenpago', editable: true, edittype: 'text', hidden: true } 
     ], 
     pager: '#pg_tbFacturaCompra', 
     rowNum: 15, 
     rowList: [15, 30, 45], 
     sortname: 'ofc_fechafactura', 
     sortorder: 'desc', 
     viewrecords: true, 
     rownumbers: true, 
     imgpath: '/content/themes/base/images', 
     multiselect: false, 
     height: 170, 
     width: 700, 
     footerrow: true, 
     grid: true, 
     toolbar: [true, "top"], 
     loadComplete: function (data) { 
      var id = $.jgrid.randId(); 
      var $grid = $('#tbFacturaCompra'); 
      var mydata = [{ ofc_nit: "", ofc_nrofac: "", ofc_autorizacion: "", ofc_alfanumerico: "-.-", ofc_codigocontrol: "", ofc_fechafactura: FechaServ, ofc_importe: "0.0", ofc_parestadofaccom: "V", ofc_partipoorden: ParTipoOrden, ofc_idordenpago: IdOrden}]; 
      $grid.jqGrid('addRowData', id, mydata[0], "first"); 
      $grid.jqGrid("editRow", id, true, '', '', '', '', reload); 
     }}); 
}); 

ОБНОВЛЕНИЕ Олег это код, который содержит Jquery UI Autocomplete: В возвращении значение "Autorizacion" является ID: item.ofr_ultimaauto в функции автозаполнения "ListaProveedores" значение «Autorizacion "item.id Эта форма предназначена для быстрого заполнения счетов (налогов) Сетка не из поисковой панели инструментов. Когда вы выбираете значение из автозаполнения, как я могу копировать id: item.ofr_ultimaauto в столбец «Autorizacion»?

function getData(request, response) { 
    $.ajax({ 
     url: '@Url.Action("BuscaRazonSocial", "raFacturaCompra", new { area = "Operacion" })', 
     type: 'GET', 
     dataType: 'json', 
     data: { term: request.term, maxResult: 20 }, 
     success: function (data) { 
      response($.map(data, function (item) { 
       return { label: item.ofr_nit, value: item.ofr_nit, id: item.ofr_ultimaauto, desc: item.ofr_razon }; 
      })) 
     } 
    }); 
} 
function ListarProveedores(elem) { 
    $(elem).autocomplete({ 
     source: getData, 
     minLength: 5, 
     autosearch: true, 
     select: function (event, ui) { 
     $(elem).val(ui.item.value); 
      $(elem).focus().trigger({ type: 'keypress', charCode: 13 }); 
     } 
    }).data("ui-autocomplete")._renderItem = function (ul, item) { 
     return $("<li>") 
     .append("<a class='ui-menu-item-titulo'><strong>" + item.label + "<br>" + item.desc + " - </strong>" + item.id + "</a>") 
     .appendTo(ul); 
    }; 
} 

ответ

0

код, который вы вывесили не содержит какой-либо вызов JQuery UI автозаполнения. Поэтому я не могу указать вам точное место кода, который вы можете оценить. Тем не менее я пытаюсь объяснить, что вы можете сделать. Обычно один звонок $(elem).autocomplete внутри dataInit. jQuery UI Autocomplete поддерживает select callback (см. пример here), который вы можете использовать для установки нового значения в столбце Autorizacion. Для столбца используется name: 'ofc_autorizacion'. Таким образом, поле ввода id поля поиска находится на панели поиска: gs_ofc_autorizacion, и к нему можно обращаться по адресу $("#gs_ofc_autorizacion").val("5031124051");. Это данные, возвращаемые с сервера для автозаполнения jQuery UI Automomplete, находятся в массиве формата объектов (например, массив объектов со свойствами value и autorizacion), то вы можете найти те же свойства в ui.item. Он может упростить ваш код. Надеюсь, вы понимаете, что я имею в виду.

ОБНОВЛЕНО: Я вижу, что строка выше сетки не от панели инструментов поиска, а от встроенного редактирования. Вы используете var id = $.jgrid.randId(); как идентификатор первой строки. Таким образом, идентификатор поля ввода будет содержать id + "_ofc_autorizacion" вместо "gs_ofc_autorizacion".

+0

Я уже обновил свой вопрос с помощью автозаполнения кода, надеюсь, вы можете мне помочь? – raranibar

+0

@raranibar: поскольку столбец 'ofc_autorizacion' имеет свойство editable: true', редактируемая строка должна содержать' '(где 123 - rowid который вы можете найти внутри 'select' callback автозаполнения как' $ (elem) .closest ("tr"). attr ("id") '). Таким образом, вы можете изменить обратный вызов 'select' примерно на следующую функцию: select (function, ui) {$ (elem) .val (ui.item.value); $ (Эль) .closest ("TR") находит ("вход [имя = ofc_autorizacion]") вал (ui.item.id)..; $ (elem) .focus(). trigger ({type: "keypress", charCode: 13}); } ' – Oleg

+0

Спасибо, что смог решить мою проблему с вашим решением. – raranibar

Смежные вопросы