2010-10-18 65 views
1

我想在jqGrid中使用網格作爲子網格,因爲我讀「簡單子網格」不允許單元格編輯。jqGrid addRowData不能用作網格作爲子網格

我正在用dataType函數成功填充主網格,我試圖做同樣的子網格,但子網格顯示沒有數據,我不知道爲什麼,因爲我調試,我從Web服務正確捕獲數據,但是當我通過數據做一個addRowData到子網格似乎沒有效果。

我正在使用ASP.Net 2.0 Web服務和JSON,這裏是客戶端代碼,任何想法:-S?感謝:-)

編輯:

我加了:

function ReceivedClientData(data) { 
    var thegrid = $("#" + gridId); 
    if ($(thegrid).length == 0) alert('NOT EXISTS'); 

    thegrid.clearGridData(); 
    for (var i = 0; i < data.length; i++) 
     thegrid.addRowData(i + 1, data[i]); 
} 

我收到一個NOT EXISTS的子網格,我不知道,如果是檢查是否一個最好的辦法選擇器存在,但這意味着當我捕獲ajax回發時,我無法找到由jqgrid創建的「動態」?我如何填寫子網格?

編輯2:

我認爲我是錯的亞格ID,現在我在一個變量的grid_id

subGridRowExpanded: function(subgrid_id, row_id) { 
      subGridID = subgrid_id; 

保存和使用它的時候回調,但我當我嘗試addRowData時,從jqgrid.js接收p.rownumbers爲null。 :-S有什麼建議?

function ReceivedClientDataForSubGrid(data) { 
    var thegrid = $("#" + subGridID); 

    if ($(thegrid).length == 0) alert('NOT EXISTS'); 

    thegrid.clearGridData(); 
    for (var i = 0; i < data.length; i++) 
     thegrid.addRowData(i + 1, data[i]); 
} 

回答

1

移動 「編輯3」 的答案,以紀念這個問題的回答


我解決了它,我accesing不正確的ID,正確的ID是VAR thegrid = $( 「#」+ subGridID +「_t」);

完整的客戶端代碼

var gridId = "table"; 
$(function() { 
    $("#"+gridId).jqGrid({ 
     datatype: function(pdata) { getData(pdata); }, 
     height: 250, 
     colNames: ['Nombre Objetivo', 'Tipo Objetivo', 'Objetivo Tipo 1', 'Objetivo Tipo 2', 'Objetivo Tipo 3', 'Autoevaluacion', 'Resultado Final', 'Actions'], 
     colModel: [ 
         { name: 'ObjetivoNombre', width: 200, sortable: false }, 
         { name: 'TipoObjetivo', width: 200, sortable: false, editable: true, edittype: 'select', editoptions: { value: { 1: '1', 2: '2', 3: '3'}} }, 
         { name: 'ObjetivoTipo1', width: 200, sortable: false, hidden: true }, 
         { name: 'ObjetivoTipo2', width: 200, sortable: false, hidden: true }, 
         { name: 'ObjetivoTipo3', width: 200, sortable: false, hidden: true }, 
         { name: 'Autoevaluacion', width: 200, sortable: false, hidden: false, editable: true }, 
         { name: 'ResultadoFinal', width: 200, sortable: false, hidden: false, editable: true }, 
         { name: 'act', index: 'act', width: 75, sortable: false } 
        ], 
     cellEdit: true, 
     cellsubmit: 'clientArray',   
     pager: '#pager', 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     sortname: 'Nombre Objetivo', 
     sortorder: 'desc', 
     viewrecords: true, 
     gridComplete: function() { 
      var ids = jQuery("#table").jqGrid('getDataIDs'); 
      var idsLength = ids.length; 
      for (var i = 0; i < idsLength; i++) { 
       var cl = ids[i]; 
       de = "<input style='height:22px;width:20px;' type='button' value='D' onclick=\"deleteRow('" + cl + "');\" />"; 
       jQuery("#table").jqGrid('setRowData', ids[i], { act: de }); 
      } 
     }, 
     subGrid: true,   
     subGridRowExpanded: function(subgrid_id, row_id) { 
      var subgrid_table_id; 
      subgrid_table_id = subgrid_id + "_t"; 
      jQuery("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table>"); 
      jQuery("#" + subgrid_table_id).jqGrid(
      { 
       datatype: function(pdata) { getDataSubGrid(pdata); }, 
       colNames: ['Nombre Objetivo', 'Tipo Objetivo', 'Objetivo Tipo 1', 'Objetivo Tipo 2', 'Objetivo Tipo 3', 'Autoevaluacion', 'Resultado Final'],//, 'Actions'], 
       colModel: [ 
         { name: 'ObjetivoNombre', width: 200, sortable: false }, 
         { name: 'TipoObjetivo', width: 200, sortable: false, editable: true, edittype: 'select', editoptions: { value: { 1: '1', 2: '2', 3: '3'}} }, 
         { name: 'ObjetivoTipo1', width: 200, sortable: false, hidden: true }, 
         { name: 'ObjetivoTipo2', width: 200, sortable: false, hidden: true }, 
         { name: 'ObjetivoTipo3', width: 200, sortable: false, hidden: true }, 
         { name: 'Autoevaluacion', width: 200, sortable: false, hidden: false, editable: true }, 
         { name: 'ResultadoFinal', width: 200, sortable: false, hidden: false, editable: true } 
        ], 
       height: 100, 
       rowNum: 20, 
       sortname: 'num', 
       sortorder: "asc"     
      }); 
     }, 
     caption: "jQGrid Ejemplo" 
    })  
}); 
     //AJAX GET DATA FROM WS 
    function getData(pData) { 
     gridId = "table"; 
     $.ajax({ 
      type: 'POST', 
      contentType: "application/json; charset=utf-8", 
      url: '<%= ResolveClientUrl("~/WebService.asmx/ObtenerDatosDPO") %>', 
      data: '{}', 
      dataType: "json", 
      success: function(data, textStatus) { 
        ReceivedClientData(JSON.parse(getMain(data)).rows); 
      }, 
      error: function(data, textStatus) { 
       alert('An error has occured retrieving data!'); 
      } 
     }); 
    } 
    function getDataSubGrid(pData) { 
     gridId = "table_t"; 
     $.ajax({ 
      type: 'POST', 
      contentType: "application/json; charset=utf-8", 
      url: '<%= ResolveClientUrl("~/WebService.asmx/ObtenerDatosDPOSubGrid") %>', 
      data: '{}', 
      dataType: "json", 
      success: function(data, textStatus) { 
       ReceivedClientData(JSON.parse(getMain(data)).rows); 
      }, 
      error: function(data, textStatus) { 
       alert('An error has occured retrieving data subgrid!'); 
      } 
     }); 
    } 

    //COMMON FUNCTIONS 
    function ReceivedClientData(data) { 
     var thegrid = $("#"+gridId); 

     thegrid.clearGridData(); 
     for (var i = 0; i < data.length; i++) 
      thegrid.addRowData(i + 1, data[i]); 
    }  
    function getMain(dObj) { 
     if (dObj.hasOwnProperty('d')) 
      return dObj.d; 
     else 
      return dObj; 
    } 
+0

,而不要修改標題爲[解決],你應該慶祝自己的答案,作爲接受的答案。 – 2012-01-11 08:47:16

+0

我知道,但我不能立即接受自己的答案 – rubdottocom 2012-01-12 12:32:34