javascript - JQgrid on sorting data changes for ID column -


i using jqgrid display data, data in grid added row row. using "local" data type enable sorting on client side. having 'id'in colmodel stores database id. @ first time data loaded when click on header sorting data content of 'id' column changes 1,2 ...

please help..

my code

var pagenumber=0,     previouslyselectedid,     numberofrecords;   var numberofpages,sortingflag=false;  $(function() {      $("#suppliercommoditylist").jqgrid({                            datatype: "local",                                       colnames:['id','supplier','commodity','unit','cost per unit','start date','end date'],             colmodel:[                 {name:'id',index:'id',hidden:true},                  {name:'supplier.name',index:'supplier.name',sorttype:"string",formatter:wraptolinkformatter},                 {name:'coproductspecification.name',index:'coproductspecification.name',sorttype:"string",sortable:true},                  {name:'unit',index:'unit',sorttype:"string"},                 {name:'expense',index:'expense',sorttype:"int"},                  {name:'startdatestr',index:'startdate',formatter:dateformatter},                  {name:'enddatestr',index:'enddate',formatter:dateformatter}                  ],              pager: '#suppliercommoditypager',          //require id pagination, contains id pagination div.             viewrecords: true,             multiselect: false,      // enable multiselect (chack box)             caption: "supplier commodity",  //to show title on top                   width: 920,             height:600,             viewrecords: true,             loadonce: true, // enable sorting on client side              sortable: true, //to enable sorting              onpaging:paginationevent,    //pagination             onsortcol:sortingevent,             gridcomplete:gridcompletefunction,             editurl: "clientarray"         }).navgrid('#suppliercommoditylist',{edit:false,add:false,del:false});      attach_events(pagiantion_control_classes,'suppliercommoditylist','suppliercommoditypager',get_supplier_commodity_details);     sortingevent.gridid='suppliercommoditylist'; //id of grid      sortingevent.pagerid='suppliercommoditypager';//id of pager     get_supplier_commodity_details(0);       });   /**  * method data .  */ var get_supplier_commodity_details=function(requestedpage){      if(typeof requestedpage == 'undefined')         requestedpage=0;     var rurl='suppliercommodity/false';     $.ajax({         url: rurl+'/'+requestedpage,         processdata:false,         type: 'get',          success: function(data, textstatus, jqxhr){                                  render_supplier_commodity_details(data,requestedpage);         }                                    });  };  /**  * method used render data in grid, row row  *   */  var render_supplier_commodity_details=function(data,pageno){      numberofrecords=data.numberofrecords;      var numberofpages=data.totalpages;      var noofrecordperpage=0;      console.debug(data);         $.each(data.suppliercommoditylist,function(i,row){             $("#suppliercommoditylist").jqgrid('addrowdata',row.id,row);                          noofrecordperpage+=1;         });          //alert(noofrecordperpage);         $("#suppliercommoditylist").setgridparam({rownum:numberofrecords});         //jquery("#suppliercommoditylist").trigger("reloadgrid"); // avoid total no of pages shown 0.         $('span#sp_1_suppliercommoditypager').text(data.totalpages); //shows total pages         $('input.ui-pg-input').val(pageno+1);         $("#suppliercommoditylist").setgridparam({rownum:numberofrecords});         if(numberofpages==1){             $('#suppliercommoditypager .ui-paging-info').text('view '+ 1 +' - '+ noofrecordperpage+ ' of '+noofrecordperpage);         }else if(numberofpages==(parseint(pageno)+1)){             var minrecord=numberofrecords-noofrecordperpage+1;             var maxrecord=numberofrecords;             $('#suppliercommoditypager .ui-paging-info').text('view '+ minrecord +' - '+ maxrecord+ ' of '+numberofrecords);         }else if(numberofpages!=1){         var minrecord=(noofrecordperpage*pageno)+1;         var maxrecord=noofrecordperpage*(pageno+1)>numberofrecords?noofrecordperpage  :noofrecordperpage*(pageno+1);             $('#suppliercommoditypager .ui-paging-info').text('view '+minrecord +' - '+ maxrecord+ ' of '+data.numberofrecords);         }  };  /**  * method handling sorting of column   */ sortingevent=function(index,icol,sortorder){//index=col. name, icol=index of column,sortorder=asc or desc     // console.debug(index+ icol+sortorder+"   satrt");      sortingflag=true;                                  //flag required in gridcompletefunction change text in pager.      numberofpages=$('span#sp_1_'+sortingevent.pagerid).text();     var pagenumber=$('#'+sortingevent.pagerid+' .ui-pg-input').val();          if(icol== 6 || icol==7){             var obj=$("#"+sortingevent.gridid).jqgrid('getrowdata');             console.debug(obj);               comparedate.sortorder=sortorder=='asc'?1:-1;  //for acending order directly return 1 if 1st element<2nd element             comparedate.sortingfield=(icol==6)?'startdatestr':'enddatestr';              obj.sort(comparedate);             console.debug(obj);              var gridobj = jquery("#"+sortingevent.gridid);               var textonpager=$('#'+sortingevent.pagerid+' .ui-paging-info').text();             gridobj.cleargriddata();             $.each(obj,function(i,row){                 $("#"+sortingevent.gridid).jqgrid('addrowdata',row.id,row);          //appends data row row grid               });             $('#'+sortingevent.pagerid+' .ui-paging-info').text(textonpager);             $('span#sp_1_'+sortingevent.pagerid).text(numberofpages); //shows total pages             $('#'+sortingevent.pagerid+' .ui-pg-input').val(pagenumber);             return 'stop';         } };  /**  * method called when click on link updating headline  */ clickmethod=function(id){      if(id!=null && typeof id != 'undefined')         window.location = "/kiss/portal/yoadmintool/suppliercommodity/suppliercommoditydetail/"+id+"/";     else         window.location = "/kiss/portal/yoadmintool/suppliercommoditylist";   };     /*   * method gets called on pagination.   */  var paginationevent=function(pgbutton){     pagenumber=$('#suppliercommoditypager .ui-pg-input').val();     var gridobj = jquery("#suppliercommoditylist");       gridobj.cleargriddata();     get_supplier_commodity_details(pagenumber-1);     };     gridcompletefunction=function(){    var noofrecordperpage=jquery("#suppliercommoditylist").jqgrid('getgridparam', 'records');     if(sortingflag){         if(numberofpages==1){         $('#suppliercommoditypager .ui-paging-info').text('view '+ 1 +' - '+ noofrecordperpage+ ' of '+noofrecordperpage);         }else if(numberofpages==(parseint(pagenumber)+1)){             var minrecord=numberofrecords-noofrecordperpage+1;             var maxrecord=numberofrecords;             $('#suppliercommoditypager .ui-paging-info').text('view '+ minrecord +' - '+ maxrecord+ ' of '+numberofrecords);         }else if(numberofpages==0){          }else if(numberofpages!=1){         var minrecord=(noofrecordperpage*pagenumber)+1;         var maxrecord=noofrecordperpage*(parseint(pagenumber))>numberofrecords?noofrecordperpage  :noofrecordperpage*(parseint(pagenumber));             $('#suppliercommoditypager .ui-paging-info').text('view '+minrecord +' - '+ maxrecord+ ' of '+numberofrecords);         }      }     sortingflag=false;     $('.ui-state-disabled.ui-pg-button').removeclass('ui-state-disabled').addclass('ui-state-enabled');//to enable pager button  };    /**   * method wrap discription link updation purpose  */  wraptolinkformatter=function(cellvalue, options, rowobject){      var link="<a href=\"javascript:clickmethod('"+rowobject.id+"');\">"+cellvalue+"</a>";      return link;  }; 

i have seen the jsfiddle demo many times , wonder origin of it. problem demo really bad template. contains many small errors , shows the worst way fill jqgrid local data. please never use template real code.

the error in current code following: choosed id name of first column. id property used save rowid (the id of <tr> elements of grid). on 1 side use id: 48803 , id: 48769. on other side use $("#grid").jqgrid('addrowdata', + 1, mydata[i]);. id set i + 1 (1 , 2). values 48803 , 48769 placed in grid, id properties of internal data parameter overwritten 1 , 2 values. if change code $("#grid").jqgrid('addrowdata', data[i][0], mydata[i]); problem solved.

nevertheless strictly recommend rewrite code. should first fill mydata , create grid data: mydata abd gridview: true options. should additionally fix sorttype corresponds data use. recommend additionally use height: "auto" instead of height: 250 , include pager. current code display first 20 rows of data (rownum has default value 20) , user not able see next page.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -