I have a grid bound to a cfc, populating an id column and a checkbox (boolean) column. onLoad, i want to get a list of ID values, but only those having checkbox = 1 Here is the working code, with great help from Jan S
<script language="JavaScript">
function init(){
var grid = ColdFusion.Grid.getGridObject('testgrid');
var gs = grid.getStore();
var records = gs.getRange();
var filteredRecords = [];
for (i = 0; i < records.length; i++) {
// note: for CF, you MUST capitalize grid header names
if (records[i].get('SELECT') === 1) {
var thisID = records[i].get('ID');
filteredRecords.push(thisID);
}
}
document.getElementById('idList').value=filteredRecords;
}
ColdFusion.Event.registerOnLoad(init,null,false,true);
</script>
<cfset items=QueryNew("id,Description,Select")>
<cfset Temp=QueryAddRow(items,1)>
<cfset Temp=QuerySetCell(items,"id","11")>
<cfset Temp=QuerySetCell(items,"Description","Some item")>
<cfset Temp=QuerySetCell(items,"Select",1)>
<cfset Temp=QueryAddRow(items)>
<cfset Temp=QuerySetCell(items,"id","22")>
<cfset Temp=QuerySetCell(items,"Description","Some other item")>
<cfset Temp=QuerySetCell(items,"Select",1)>
<cfset Temp=QueryAddRow(items)>
<cfset Temp=QuerySetCell(items,"id","33")>
<cfset Temp=QuerySetCell(items,"Description","A third item")>
<cfset Temp=QuerySetCell(items,"Select",0)>
<cfform>
<cfgrid name="testgrid" format="html" query="items">
<cfgridcolumn name="id" header="ID" select="no">
<cfgridcolumn name="Description" header="Description" select="no">
<cfgridcolumn name = "Select" header="Select" select="yes" type="boolean">
</cfgrid>
<br>
<!--- populate this with list of ID's having the checkbox checked, here: 11,22 --->
<input type="text" name="idList" id="idList"> <input type="button" name="getList" value="Get List" onClick="init()">
</cfform>
Basically I need to translate into AJAX this SQL statement:
select stringColumn where booleanColumn = 1 from myGrid
I'm using Cold Fusion 9 which is based on js ext 3.1 i believe
to get an array with all a field from all records where another field is 1:
isData.on('load', function(store, records){
// create a new array with all records where the 'booleanColumn' is = 1
var filteredRecords = [];
for (i = 0; i < records.length; i++) {
if (records[i].get('booleanColumn') === 1) {
filteredRecords.push(records[i]);
}
}
console.log(filteredRecords);
// create a new array of 'stringColumn' values
var filteredValues = [];
for (i = 0; i < filteredRecords.length; i++) {
filteredValues[i] = filteredRecords[i].get('stringColumn');
}
console.log(filteredValues);
// proceed with filtered values...
});