2017-08-29 8 views
0
$("#jqGrid").jqGrid({ 
    url: "getJsonData", 
    async: true, 
    mtype: "GET", 
    datatype: "json", 
    colModel: [      
     { label: 'TESTID', name: 'testID', width: 60, sorttype: 'integer' , 
      colmenu : true, 
      coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
      searchoptions : { 
       searchOperMenu : false, 
       sopt : ['eq','gt','lt','ge','le'] 
      } 
     }, 
     { label: 'SUBTESTID', name: 'subTestID', width:80, sorttype: 'string' , 
      colmenu : true, 
      coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
      searchoptions : { 
       searchOperMenu : false, 
       sopt : ['eq','gt','lt','ge','le'] 
      } 
     }, 
     { label: 'CLIENT', name: 'client', width: 60, sorttype: 'string', 
      colmenu : true, 
      coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
      searchoptions : { 
       searchOperMenu : false, 
       sopt : ['eq','gt','lt','ge','le'] 
      } 
     }, 
     { label: 'RESULTS', name: 'testResults', width: 70, sorttype: 'string', 
      colmenu : true, 
      coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:true, freeze : true}, 
      searchoptions : { 
       searchOperMenu : false, 
       sopt : ['eq','gt','lt','ge','le'] 
      } 
     }, 
     { lable:"Seq Id", hidden:true, name: 'seqId' } 
    ], 
    loadComplete: function() { 
     var rowIds = $('#jqGrid').jqGrid('getDataIDs'); 
     for (i = 0; i < rowIds.length; i++) {//iterate over each row 
      rowData = $('#jqGrid').jqGrid('getRowData', rowIds[i]); 
      if (rowData['testResults'] === "Pass") { 
       $('#jqGrid').jqGrid('setRowData', rowIds[i], true, "CSSClass"); 
      } 
      if (rowData['testResults'] == "Fail") { 
       $('#jqGrid').jqGrid('setRowData', rowIds[i], true, "CSSClass1"); 
      } 
     } 
    }, 
    onSelectRow:function(rowid){ 
     var rowData = jQuery('#jqGrid').jqGrid('getRowData', rowid); 
     if (rowData['testResults'] == "Fail") { 
      console.log("clicked"); 
      $(this).jqGrid("toggleSubGridRow", rowid); 
     } 
    }, 
    subGrid: true, 
    subgridtype:"json", 
    subGridRowExpanded: function(subgrid_id, row_id) { 
     var rowData = jQuery('#jqGrid').jqGrid('getRowData', row_id); 
     console.log("rowData:::"+rowData); 
     var seqId=rowData['seqId']; 

     console.log(seqId) 
     subgrid_table_id = subgrid_id+"_t"; 
     pager_id = "p_"+subgrid_table_id; 
     $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class=' table2 scroll table-striped table' style='border: 1px solid #ccc;'></table>"); 
     jQuery("#"+subgrid_table_id).jqGrid({ 
      url:"getCommentsJsonData/"+seqId, 
      datatype: "json", 
      mtype: "GET", 
      height:'auto', 
      width: 1400, 
      colNames: ['File Name','Field Name','Actual Field Value ','Excpected Field Value'], 
      colModel: [ 
       {name:"fileName",index:"fileName"}, 
       {name:"fieldName",index:"fieldName"}, 
       {name:"actualFieldValue",index:"actualFieldValue"}, 
       {name:"excpectedFiledValue",index:"excpectedFiledValue"}, 
      ], 
      loadonce:true, 
      rowNum:20 
     }); 
    }, 
    loadonce: true, 
    //navOptions: { reloadGridOptions: { fromServer: true } }, 
    viewrecords: true, 
    width: 1390, 
    height: 300, 
    rowNum: 3000, 
    colMenu : true, 
    shrinkToFit : true,  
    grouping: true, 
    hoverrows:false, 
    groupingView: { 
     groupField: ["client"], 
     groupColumnShow: [true], 
     groupText: ["<b>{0}</b>"], 
     groupOrder: ["asc"], 
     groupSummary: [false], 
     groupCollapse: false    
    }, 
    scroll: 1, // set the scroll property to 1 to enable paging with scrollbar - virtual loading of records 
    emptyrecords: 'Scroll to bottom to retrieve new page', // the message will be displayed at the bottom 
    sortable: true, 
    caption: "ART TEST CASES RESULTS",// set caption to any string you wish and it will appear on top of the grid 
    pager: "#jqGridPager" 
}); 

$("#jqGrid").jqGrid("hideCol", "subgrid"); 

// activate the build in search with multiple option 
$('#jqGrid').navGrid("#jqGridPager", {   
     search: true, // show search button on the toolbar 
     add: false, 
     edit: false, 
     del: false, 
     refresh: true, 
    }, 
    {}, // edit options 
    {}, // add options 
    {}, // delete options 
    { multipleSearch: true } // search options - define multiple search 
); 
$('.colmenu').on('click',function(event){ 
    event.preventDefault(); 
}) 
// on chang select value change grouping 
jQuery("#chngroup").change(function(){ 
    var vl = $(this).val(); 
    if(vl) { 
     if(vl === "clear") { 
      jQuery("#jqGrid").jqGrid('groupingRemove',true); 
     } else { 
      jQuery("#jqGrid").jqGrid('groupingGroupBy',vl); 
     } 
    } 
});  

Quand je mets loadonce = true dans ma grille de sous ne fonctionne pas, mais quand je l'ai changé cela loadonce = false alors sous-grille fonctionne mais mon pagination et des fonctionnalités à la recherche ne fonctionnent pas.jqGrid sous-maille ne fonctionne pas lorsque la charge une fois vrai

$(document).ready(function(){ 
    $.jgrid.styleUI.Bootstrap.base.rowTable = " table1 table-bordered"; 
    var previousRowId = 0; 
    $("#jqGrid").jqGrid({ 
     url: "getJsonData", 
     async: true, 
     mtype: "GET", 
     datatype: "json", 
     colModel: [      
      { label: 'TESTID', name: 'testID', width: 60, sorttype: 'integer' , 
       colmenu : true, 
       coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
       searchoptions : { 
        searchOperMenu : false, 
        sopt : ['eq','gt','lt','ge','le'] 
       } 
      }, 
      { label: 'SUBTESTID', name: 'subTestID', width:80, sorttype: 'string' , 
       colmenu : true, 
       coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
       searchoptions : { 
        searchOperMenu : false, 
        sopt : ['eq','gt','lt','ge','le'] 
       } 
      }, 
      { label: 'CLIENT', name: 'client', width: 60, sorttype: 'string' , 
       colmenu : true, 
       coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:false, freeze : true}, 
       searchoptions : { 
        searchOperMenu : false, 
        sopt : ['eq','gt','lt','ge','le'] 
       } 
      }, 
      { label: 'RESULTS', name: 'testResults', width: 70, sorttype: 'string' , 
       colmenu : true, 
       coloptions : {sorting:true, columns: true, filtering: true, seraching:true, grouping:true, freeze : true}, 
       searchoptions : { 
        searchOperMenu : false, 
        sopt : ['eq','gt','lt','ge','le'] 
       } 
      }, 
      { 
       lable:"Seq Id", 
       hidden:true, 
       name: 'seqId'    
      } 
     ], 
     loadComplete: function() { 
      var rowIds = $('#jqGrid').jqGrid('getDataIDs'); 
      for (i = 0; i < rowIds.length; i++) {//iterate over each row 
       rowData = $('#jqGrid').jqGrid('getRowData', rowIds[i]); 

       if (rowData['testResults'] === "Pass") {  
        $('#jqGrid').jqGrid('setRowData', rowIds[i], true, "CSSClass"); 
       } 
       if (rowData['testResults'] == "Fail") { 
        $('#jqGrid').jqGrid('setRowData', rowIds[i], true, "CSSClass1"); 
       } 
      } 
     }, 
     onSelectRow:function(rowid){ 
      var rowData = jQuery('#jqGrid').jqGrid('getRowData', rowid); 
      if (rowData['testResults'] == "Fail") { 
       console.log("clicked"); 
       $(this).jqGrid("toggleSubGridRow", rowid); 
      } 
     }, 
     subGrid: true, 
     subgridtype:"json", 
     subGridRowExpanded: function(subgrid_id, row_id) { 
      var rowData = jQuery('#jqGrid').jqGrid('getRowData', row_id); 
      console.log("rowData:::"+rowData); 
      var seqId=rowData['seqId']; 

      console.log(seqId) 
      subgrid_table_id = subgrid_id+"_t"; 
      pager_id = "p_"+subgrid_table_id; 
      $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class=' table2 scroll table-striped table' style='border: 1px solid #ccc;'></table>"); 
      jQuery("#"+subgrid_table_id).jqGrid({ 
       url:"getCommentsJsonData/"+seqId, 
       datatype: "json", 
       mtype: "GET", 
       height:'auto', 
       width: 1400, 
       colNames: ['File Name','Field Name','Actual Field Value ','Excpected Field Value'], 
       colModel: [ 
        {name:"fileName",index:"fileName"}, 
        {name:"fieldName",index:"fieldName"}, 
        {name:"actualFieldValue",index:"actualFieldValue"}, 
        {name:"excpectedFiledValue",index:"excpectedFiledValue"}, 
       ], 
       loadonce:true, 
       rowNum:20 
      }); 
     }, 
     loadonce: true, 
     //navOptions: { reloadGridOptions: { fromServer: true } }, 
     viewrecords: true, 
     width: 1390, 
     height: 300, 
     rowNum: 3000, 
     colMenu : true, 
     shrinkToFit : true,  
     grouping: true, 
     hoverrows:false, 
     groupingView: { 
      groupField: ["client"], 
      groupColumnShow: [true], 
      groupText: ["<b>{0}</b>"], 
      groupOrder: ["asc"], 
      groupSummary: [false], 
      groupCollapse: false    
     }, 
     scroll: 1, // set the scroll property to 1 to enable paging with scrollbar - virtual loading of records 
     emptyrecords: 'Scroll to bottom to retrieve new page', // the message will be displayed at the bottom 
     sortable: true, 
     caption: "ART TEST CASES RESULTS",// set caption to any string you wish and it will appear on top of the grid 
     pager: "#jqGridPager" 
    }); 

    $("#jqGrid").jqGrid("hideCol", "subgrid"); 

    // activate the build in search with multiple option 
    $('#jqGrid').navGrid("#jqGridPager", {   
      search: true, // show search button on the toolbar 
      add: false, 
      edit: false, 
      del: false, 
      refresh: true, 
     }, 
     {}, // edit options 
     {}, // add options 
     {}, // delete options 
     { multipleSearch: true } // search options - define multiple search 
    ); 
    $('.colmenu').on('click',function(event){ 
     event.preventDefault(); 
    }) 
    // on chang select value change grouping 
    jQuery("#chngroup").change(function(){ 
     var vl = $(this).val(); 
     if(vl) { 
      if(vl === "clear") { 
       jQuery("#jqGrid").jqGrid('groupingRemove',true); 
      } else { 
       jQuery("#jqGrid").jqGrid('groupingGroupBy',vl); 
      } 
     } 
    });  
}); 
+0

Vous devez publier le code JavaScript que vous utilisez. Il est clair que tout peut être utilisé de manière correcte et incorrecte. On doit savoir plus de détails sur l'utilisation. De plus, il est strictement recommandé d'inclure ** la version ** de jqGrid, que vous utilisez (peut utiliser) et la fourche ([free jqGrid] (https://github.com/free-jqgrid/jqGrid), commercial [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) ou un ancien jqGrid en version <= 4.7). Beaucoup de questions à propos de jqGrid utilise la balise "free-jqgrid", mais en utilisant un autre produit. – Oleg

+0

merci @oleg la version que j'utilise est Guriddo jqGrid JS 5.2.1 –

+0

Vous pouvez ouvrir le fichier 'jquery.jqgrid.min.js' dans l'éditeur de texte et voir le commentaire comme le début du fichier (voir [ici] (https://github.com/tonytomov/jqGrid/blob/v5.2.1/js/grid.base.js#L4-L9) aussi). Il contient [l'URL] (http://guriddo.net/?page_id=103334) avec la description du contrat de licence et ** les prix ** que vous devez payer. En d'autres termes, vous utilisez actuellement le produit ** commercial ** "Guriddo jqGrid JS". Je développe un produit alternatif sous le nom "free jqGrid" disponible sous licence MIT ou GPL ** complètement gratuit **. De toute façon, il faut connaître le code JavaScript pour vous aider. – Oleg

Répondre

0

Je vais dire wow !!! vous essayez d'utiliser rapidement toutes les propriétés de la grille dans une grille.

Partons du début.

  1. L'option grille

    ... async: true, ...

est dérangée et il n'a pas d'effet. Pour avoir un effet, cette option doit être placée dans l'objet ajaxGridOptions. Voir docs here, mais pour être honnête cette option dans ajax est par défaut vrai, donc il n'y a pas besoin de l'utiliser.

  1. Le code dans la grille est totalement inefficace. Avec le même succès et plus élégant est d'utiliser rowattr event Cela signifie que vous n'avez pas besoin d'utiliser les méthodes getRowData et setRowData et juste pour analyser la ligne et mettre la classe appropriée.

  2. Je ne suis pas sûr de ce que vous essayez d'utiliser dans onSelectRow. Je vous suggère d'abord de désactiver cet événement, ce qui provoque vos problèmes et de montrer la ligne de sous-maille qui vous cachez

  3. Le défilement de l'option: 1 ne fonctionnera pas si le regroupement est activé groupement: true

Ce que je vous suggère d'abord est de résoudre ces problèmes dans la grille et ensuite faites-nous savoir s'il y a un problème.

+0

merci @Tony Tomov J'ai fait les changements que vous avez discutés. Async supprimé: vrai de code.J'ai commenté le bloc de code onSelectRow et afficher la ligne de sous-grille et a également commenté l'option de défilement: 1. Mais toujours confronté au même problème, subgrid ne fonctionne que si loadoce: false.Je veux sungrid avec loadonce: true. –

+0

Bonjour, j'ai testé votre code et trouvé un bug lorsque grouping, subgrid et loadonce ont la valeur true. J'ai [résolu le problème] (https://github.com/tonytomov/jqGrid/commit/ec1545543683093bfcc220fd50a20a4d85dcbed2). Jusqu'à la publication des modifications, vous pouvez recharger la grille après tout le code quelque chose comme ceci 'setTimeout (function() {$ (" # jqGrid "). Trigger (" reloadGrid ");}, 100);' –

+0

Mon problème a été résolu . Merci :) @Tony Tomov –