2016-03-31 3 views
0

Я пытаюсь отредактировать запись, но вместо отправки значения столбца идентификатора он продолжает отправлять идентификатор таблицы, что меня не волнует. Вот код:JQGrid POST значение столбца вместо ID

$("#list1").jqGrid({ 
       datatype: 'clientSide',    
       colNames: ["Id", "Id prodotto", "Nome prodotto", "Quantità", 
          "Pista", "Politica", "Attivazione", "Bundle", 
          "Scontato", "Valore sconto", "Twin card", "DN", 
          "ISDN", "Disabilitato"], 
       colModel: [ 
        { name: "id", hidden:true, key:true}, 
        { name: "idprodotto", hidden:true},    
        { name: "prodotto"}, 
        { name: "quantita"}, 
        { name: "pista"}, 
        { name: "politica"}, 
        { name: "attivazione", formatter: "checkbox"}, 
        { name: "bundle", formatter: "checkbox"}, 
        { name: "sconti", formatter: "checkbox"}, 
        { name: "scontival"}, 
        { name: "card", formatter: "checkbox"}, 
        { name: "numero"}, 
        { name: "isdn", formatter: "checkbox"}, 
        { name: "disabilitato", width:100, sortable: false, resizable:false, hidden:true } 
       ], 
      sortname: "prodotto", 
      sortorder: "asc", 
      pager: "#pager1" 
      })   
      .navGrid('#pager1', {add: false, del: false}); 

Это может помочь сказать, что на этой странице есть две таблицы, вот первый один:

$("#list").jqGrid({ 
       datatype: 'clientSide', 
       colNames: [ 
          "Id", 
// "Id cliente", 
         "Numero", "RagSociale cliente", "Anno", 
          "Data di ordine", "Id agente", "Nome agente", "Cognome agente", 
          "Id agenzia", "RagSociale agenzia", "Id utente", "Nome utente", 
          "Data d'inserimento", "Note", "Disabilitato",""], 
       colModel: [ 
        { name: "id", hidden:true, key:true }, 
//      { name: "idCliente"}, 
        { name: "numero"}, 
        { name: "ragSocCliente"}, 
        { name: "anno"}, 
        { name: "dataOrdine"},    
        { name: "idAgente"}, 
        { name: "nomeAgente"}, 
        { name: "cognomeAgente"}, 
        { name: "idAgenzia"}, 
        { name: "ragSocAgenzia"}, 
        { name: "idUser"}, 
        { name: "nomeUser"},            
        { name: "dataInserimento"},    
        { name: "note"},     
        { name: "disabilitato", width:100, sortable: false, resizable:false, hidden: true}, 
        { name: "dataModifica", width:100, hidden: false} 
       ], 

       sortname: "dataModifica", 
       sortorder: "desc", 
       pager: "#pager", 
       onSelectRow: function (id) {      
        sessionStorage.setItem("idEdit", $("#list").jqGrid('getCell', id, 'id')); 
        $.get("getCorpoByNumero.do", {       
         id: sessionStorage.getItem("idEdit") 
        }, function (data) { 
          $("#list1").clearGridData(); 
          for (var i = 0; i < data.length; i++) {      
           var corpo = data[i];             
           $("#list1").addRowData((i+1), corpo); 

          } 
        }); 

       } 
      }) 

ответ

2

Неясно , который «значение столбца» вы хотите POST вместо ID? В какой сетке есть проблема? Вы используете navGrid для сетки #list1без с указанием и editurl, который выглядит некорректно.

Заполнение второй сетки с использованием addRowData очень плохо! Особенно плохо было бы использовать значения 0, .. data.length как rowids вместо идентификаторов, возвращаемых с сервера (от "getCorpoByNumero.do"). Это гораздо более эффективно изменить data параметр сетки и перезагрузить его .trigger("reloadGrid"):

onSelectRow: function (id) {      
    sessionStorage.setItem("idEdit", id); 
    $.get("getCorpoByNumero.do", {       
     id: id 
    }, function (data) { 
     var $grid1 = $("#list1"), p = $grid1.jqGrid("getGridParam"); 

     p.data = data; 
     $grid1.trigger("reloadGrid"); 
    }); 
} 

Более того, использование idPrefix строго рекомендуется, если вы создаете больше как одну сетку на странице. Стандартное поведение jqGrid устанавливает атрибут id всех <tr> элементов сетки (установка rowid) на значение id свойство входных данных. Он может создавать id dupplicates, если обе сетки будут иметь одинаковое значение id. Использование idPrefix: "g1_", например, в сетке #list1, принудительно добавляет префикс "g1_" ко всем значениям сетки id. Он фиксирует возможные дубликаты id. Префикс будет автоматически разделен при отправке данных на сервер.

Последнее замечание. Я рекомендую вам удалить ненужный столбец { name: "id", hidden:true, key:true } из сеток. Строка будет автоматически использовать свойство входных данных id. Вместо $("#list").jqGrid('getCell', id, 'id') вы можете использовать только id в обратном вызове onSelectRow и иметь те же данные. Аналогичным образом вы можете удалить другие скрытые столбцы (disabilitato и idprodotto). Внутренние данные будут по-прежнему иметь все входные свойства, и вы можете использовать getLocalRow для доступа к данным.

Я рекомендую заменить datatype: 'clientSide' на более распространенный datatype: 'local' и проверить, какую версию jqGrid вы используете. Я рекомендую использовать последнюю версию (4.13.1) free jqGrid. Это для jqGrid, который я разрабатываю.

+0

Проблема заключается в первой таблице (List1), когда я нажимаю edit, она отправляет запрос на неправильный идентификатор, а не идентификатор строки, я хочу отправить значение в столбце «id» – Malignus

+0

@ Malignus: Проблема существует, потому что вы заполняете сетку не так: используя 'addRowData'. Вы пробовали модификацию, которую я предлагаю? – Oleg

+0

Я сохранил хранилище сеансов, как было, потому что я использую его для получения идентификатора идентификатора столбца таблицы («#list»). Остальное, как вы его написали, и оно все еще не работает – Malignus

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