开发者

Accesing jqgrid columns and values

开发者 https://www.devze.com 2023-01-29 08:34 出处:网络
I have been playing around with jqgrid, and have the following question. To get the values of ID column, we use getDataIDs(). Is there a way I can get the values of other columns (I am using custom

I have been playing around with jqgrid, and have the following question.

  • To get the values of ID column, we use getDataIDs(). Is there a way I can get the values of other columns (I am using custom formatter to create a column link and adding delete link to each row on 'loadComplete'.)
  • Can I use conditional statements while looping over a column and values. I mean, I want to loop over user_name column below and depending on its values I want to show delete for some values and do not want to display for some values

below is the code.

$(document).ready(function() { 


   $("#list").jqGrid(
   {
    url:'index.cfc?method=getData', //CFC that will return the users
    datatype: 'json', //We specify that the datatype we will be using will be JSON
    mtype: 'POST',
    colNames:['User ID', 'User Name'], //Column Names
    colModel :[     
     {name:'user_id',index:'user_id', sorttype:"string", formatter: 'showlink', formatoptions:{baseLinkUrl:'#'}},
     {name:'user_name',index:'user_name', sorttype:"string"},
     {name:'act',index:'act',sortable:false}
    ],
    pager: $('#pager'), //The div we have spec开发者_开发技巧ified, tells jqGrid where to put the pager
    toppager: true,
    height: 'auto',
    width: 1270,
    rowNum:25, //Number of records we want to show per page
    rowList:[25,50,100], //Row List, to allow user to select how many rows they want to see per page
    sortorder: "asc", //Default sort order
    sortname: "user_id", //Default sort column
    loadComplete: function() {
     var myGrid = $("#list");
     var ids = myGrid.getDataIDs();
     for (var i = 0, idCount = ids.length; i < idCount; i++) {
      $("#"+ids[i]+" a",myGrid[0]).click(function(e) {
       var hash=e.currentTarget.hash;// string like "#?id=0"
       if (hash.substring(0,5) === '#?id=') {
        var id = hash.substring(5,hash.length);
        var text = this.textContent;
        alert("clicked the row with id='"+id+"'. Link contain '"+text+"'");
        location.href="http://en.wikipedia.org/wiki/"+text;

       }
       e.preventDefault();

      });
     }  

     for(var i=0;i<ids.length;i++){ 
      var cl = ids[i]; 

       vdelete = "<a href='#' onclick=\"testfn('"+cl+"')\">Delete</a></ids>";  
       jQuery("#list").setRowData(ids[i],{act:vdelete}) 
     }     
    },
    caption: '', //Grid Name
    jsonReader: {
    root: "ROWS", //our data
    page: "PAGE", //current page
    total: "TOTAL", //total pages
    records:"RECORDS", //total records
    cell: "",
    id: "0"

    }
   })


   $("#list").jqGrid('navGrid','#pager',
   {
    edit:false,
    add:false,
    del:false, 
    search:true,
    refresh: true,
    searchtext:"Search",
    refreshtext: "Refresh",
    'cloneToTop':true
   }); 


  }); 

Ok, I got this working using getRowData.

                var rows= jQuery("#list").jqGrid('getRowData');
                alert(rows.length);
                for(var i=0;i<rows.length;i++){
                      var row=rows[i];
                     alert(row['user_id']);//get the user_id column value
                  }

But I have another question. I want to have a hidden column and get that values. When I am trying the above code, I only get empty values.

colModel :[     
 {name:'user_id',index:'user_id', sorttype:"string", formatter: 'showlink', formatoptions:{baseLinkUrl:'#'}},
 {name:'user_name',index:'user_name', sorttype:"string"},
 {name:'act',index:'act',sortable:false},
 {name:'secretCol', hidden:true}
],


Yes it is possible .All you have to use is the third parameter in custom formatter .The third Paramter is row object so it always have the values of whole row based on which you can do whatever you want to show in your formatter

0

精彩评论

暂无评论...
验证码 换一张
取 消