Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I hide the jqgrid completely when no data returned?

Tags:

I'm having a heck of a time trying to only display my jqGrid when records are returned from my webservice. I don't want it to be collapsed to where you only see the caption bar either, but if that's the best I can do, I suppose that I could put a meaningful message into the caption. Still, I'd much rather just hide the grid and show a "No Records Found" message div block.

I also guess that if worst came to worst, I could do the solution on this question How to display information in jqGrid that there are not any data? (link included as alternate possible solution for others).

I've tried doing a .hide() inside of both the function used when loading the data from a function and the GRIDCOMPLETE event, and neither accomplished hiding the grid. I'm pretty new to JQuery, not to mention pretty new to using jqGrid.

$(document).ready(function() {     $("#list").jqGrid({         url: 'Service/JQGridTest.asmx/AssetSearchXml',         datatype: 'xml',         mtype: 'GET',         colNames: ['Inv No', 'Date', 'Amount'],         colModel: [             { name: 'invid', index: 'invid', width: 55 },             { name: 'invdate', index: 'invdate', width: 90 },             { name: 'amount', index: 'amount', width: 80, align: 'right' }],         pager: jQuery('#pager'),         postData: { "testvar": "whatever" },         rowNum: 10,         rowList: [10, 20, 30],         sortname: 'id',         sortorder: "desc",         viewrecords: true,         imgpath: 'themes/sand/images',         caption: 'My first grid',         gridComplete: function() {             var recs = $("#list").getGridParam("records");             if (recs == 0) {                 $("#list").hide();             }             else {                 alert('records > 0');             }         }     });      ...      <table id="list" class="scroll"></table>      <div id="pager" class="scroll" style="text-align:center;"></div>  

And tried this too:

$(document).ready(function() {     $("#list").jqGrid({         datatype: function(postdata) {             jQuery.ajax({                 url: 'Service/JQGridTest.asmx/AssetSearchXml',                 data: postdata,                 dataType: "xml",                 complete: function(xmldata, stat) {                     if (stat == "success") {                         var thegrid = $("#list")[0];                         thegrid.addXmlData(xmldata.responseXML);                         var recs = $("#list").getGridParam("records");                          if (recs == 0) {                             $("#list").hide();                             alert('No rows - grid hidden');                         }                         else {                             alert(recs);                         }                     }                     else {                         alert('FAIL');                     }                 }             });         },         mtype: 'GET',         colNames: ['Inv No', 'Date', 'Amount'],         colModel: [             { name: 'invid', index: 'invid', width: 55 },             { name: 'invdate', index: 'invdate', width: 90 },             { name: 'amount', index: 'amount', width: 80, align: 'right' }],         pager: jQuery('#pager'),         postData: { "testvar": "whatever" },         rowNum: 10,         rowList: [10, 20, 30],         sortname: 'id',         sortorder: "desc",         viewrecords: true,         imgpath: 'themes/sand/images',         caption: 'My first grid'     });      ...      <table id="list" class="scroll"></table>      <div id="pager" class="scroll" style="text-align:center;"></div>  

Thanks for any help you can provide.

like image 497
Billyhole Avatar asked Jul 22 '09 19:07

Billyhole


People also ask

How do I hide a column in jqGrid?

setup your grid function as follows. $('#myGrid'). jqGrid({ ... colNames: ['Manager', 'Name', 'HiddenSalary'], colModel: [ { name: 'Manager', editable: true }, { name: 'Price', editable: true }, { name: 'HiddenSalary', hidden: true , editable: true, editrules: {edithidden:true} } ], ... };

How do you hide jqGrid?

Just set opacity:0 for jqgrid element. it will work also.

What is rowNum in jqGrid?

jqGrid exposes a property rowNum where you can set the number of rows to display for each page.

How do I reset jqGrid?

jqGrid('clearGridData') . jqGrid('setGridParam', {data: data, page: 1}) . trigger('reloadGrid'); } } }); )};


1 Answers

jqGrid wraps your table with it's special sauce and divs so you should be able to do what you want by wrapping that table with your own div that you can hide:

 <div id="gridWrapper">     <table id="list" class="scroll"></table>   </div> 

Then in your gridComplete:

   gridComplete: function() {         var recs = parseInt($("#list").getGridParam("records"),10);         if (isNaN(recs) || recs == 0) {             $("#gridWrapper").hide();         }         else {             $('#gridWrapper').show();             alert('records > 0');         }     } 

Hope this helps.

like image 187
seth Avatar answered Oct 08 '22 09:10

seth