Accesing jqgrid columns and values
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
精彩评论