2010-10-18 4 views
1

Je souhaite utiliser une grille comme sous-grille dans jqGrid car j'ai lu que "simple subgrid" ne permet pas l'édition de cellule. Je remplis la grille principale avec la fonction dataType avec succès et j'essaye de faire la même chose pour les sous-réseaux, mais les sous-réseaux sans données, et je ne sais pas pourquoi parce que j'ai débogué et j'attrape correctement les données du service web , mais quand je passe par les données faire un addRowData au sous-réseau semble n'avoir aucun effet.jqGrid addRowData ne fonctionne pas avec la grille en tant que sous-grille

J'utilise un service Web ASP.Net 2.0 et JSON, Voici le code client, une idée: -S? Merci :-)

EDIT:

J'ai ajouté un:

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]); 
} 

Et je reçois un pas pour EXISTE sous-grille, je ne sais pas si est la meilleure façon de vérifier si un le sélecteur existe mais cela signifierait que je ne peux pas trouver "la dynamique" créée par jqgrid quand je capture l'ajax postback? Comment puis-je remplir le sous-réseau?

EDIT 2:

Je pense que je me trompais avec ID sous-maille, maintenant je suis dans une économie variable, le grid_id

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

et l'utiliser quand le rappel, mais je suis recevoir un p.rownumbers est null à partir de jqgrid.js quand j'essaye d'ajouterRowData. : -S des suggestions?

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]); 
} 

Répondre

1

Déplacement de la "Edit 3" à une réponse pour marquer la question de réponse


Je l'ai résolu, j'accesing à un ID incorrect, l'ID correct est var TheGrid = $ ("#" + subGridID + "_t");

code client complet

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

Au lieu de modifier votre titre [résolu], vous devez marquer votre propre réponse que la réponse acceptée. –

+0

Je sais mais je ne peux pas marquer une réponse comme acceptée immédiatement – rubdottocom