Hi,I'm encountering an error using the ESRI print task (http://utility.arcgisonline.com/arcgis/rest/services/Utilities/PrintingTools/GPServer/Export%20Web%2...) that I'm having trouble resolving.My app is here: http://gis.tpcmaps.org/apps/staging/pimaThe error only occurs after the data grid is dislplayed (e.g., via the app's Find Parcel functionality) and I then try to Print.The apps returns the error:[INDENT](in Firebug): TypeError: cyclic object value...="'")){_2f3.matchFor=cmf.slice(1,-1);}}_2f2.attrs.push(_2f3);_2f3=null;_2eb=_2ed...(in IE developer tools): SCRIPT5034: Circular reference in value argument not supported PrintTask.js, line 19 character 2208[/INDENT]The relevant code is:function doFindParcel(searchText) {
console.log("-->inside doFindParcel");
//create query task with url to map service.
var queryTask = new esri.tasks.QueryTask(configOptions.parcellayer);
var query = new esri.tasks.Query();
query.returnGeometry = true;
query.outSpatialReference = map.spatialReference;
query.outFields = configOptions.parceloutfields;
console.log("searchText: " + searchText);
//set the search text to find parameters
//findParams.searchText = searchText;
searchby = dijit.byId('searchby').value;
searchfor = searchText.trim(); //trim the string in case user puts leading spaces in.
console.log("searchby: " + searchby + ", searchfor: " + searchfor);
//Search for the keyword at the beginning of the field so it will use the indexes.
//If search with the wildcard in the front, it does a complete table scan which is slow.
switch (searchby) {
case "folio":
//query.where = "OBJECTID = 1";
//query.where = "[FOLIO] = '194001.0000'";
//query.where = "[FOLIO] = '" + searchfor + "'";
query.where = "[FOLIO] like '" + searchfor + "%'";
break;
case "owner":
query.where = "[OWNER1] like '" + searchfor + "%'";
break;
case "site_addr":
query.where = "[STR_NAME] like '" + searchfor + "%'";
break;
}
console.log("query where: " + query.where);
//Show the dialog box to containing "searching" message (so user knows app is doing something).
dijit.byId("searchingDialog").show();
queryTask.execute(query, showParcelResults, showParcelError);
}
function showParcelResults(results) {
console.log("-->inside showParcelResults");
//resultcount = results.length; //this worked for the FindTask, but not for QueryTask.
//think query task returns result objects but find task returns features?
resultcount = results.features.length;
console.log("# of query result objects passed into function: " + resultcount);
features = results.features;
//Close the 'searching' dialog box.
dijit.byId("searchingDialog").hide();
if (resultcount > 0) {
//console.log("-->inside resultcount loop");
//Open the dialog box to display results in a grid.
showResultsGrid(features);
}
//Alert user in case parcel is not found, 9/11/12 jms.
else {
dialogAlert("Find Parcel", searchby + ": " + searchfor + " was not found.");
}
}
function showParcelError(error) {
//Close the 'searching' dialog box.
dijit.byId("searchingDialog").hide();
console.log("Find Parcel", "Error in 'Find Parcel': " + error);
dialogAlert("Find Parcel", "Error in 'Find Parcel': " + error);
}
//Zoom to the parcel when the user clicks a row
function onRowClickHandler(evt){
console.log("-->inside onRowClickHandler");
var clickedTaxLotId = grid.getItem(evt.rowIndex).FOLIO;
var selectedTaxLot;
var symbol = new esri.symbol.SimpleFillSymbol(highlightfillSymbol);
dojo.forEach(map.graphics.graphics,function(graphic){
if((graphic.attributes) && graphic.attributes.FOLIO === clickedTaxLotId){
//Setting the symbology here sets it for only the feature clicked on.
graphic.setSymbol(symbol);
selectedTaxLot = graphic;
return;
}
});
var taxLotExtent = selectedTaxLot.geometry.getExtent();
map.setExtent(taxLotExtent);
}
function showResultsGrid(features) {
//This function works with an array of result that the task returns
console.log("-->inside showResultsGrid");
console.log("# of features passed into function: " + features.length);
var resultcount = features.length;
//Open the dialog box to display results in a grid.
dijit.byId("parcelresultsDialog").show();
//Display number of results in the dialog box header.
dojo.byId('rowcountdisplay').innerHTML=resultcount+" parcels.<br/>"+ configOptions.selectparcelnote + configOptions.maxrecordcount + ".";
//map.graphics.clear();
//clearAllGraphicsLayers();
//var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([98, 194, 204]), 2), new dojo.Color([98, 194, 204, 0.5]));
var symbol = new esri.symbol.SimpleFillSymbol(resultfillSymbol);
//create array of attributes and add graphic to map.
items = dojo.map(features, function(feature){
//console.log("-->inside create array of attributes");
//var graphic = result.feature;
var graphic = feature;
//Setting the symbology here sets it for all features in results.
graphic.setSymbol(symbol);
map.graphics.add(graphic);
//console.log("after adding graphic");
return feature.attributes;
});
//Create data object to be used in store
var data = {
identifier: "FOLIO", //This field needs to have unique values
label: "FOLIO", //Name field for display. Not pertinent to a grid but may be used elsewhere.
items: items
};
//Create data store and bind to grid.
var store = new dojo.data.ItemFileReadStore({
data: data
});
//Grid used in the results pop-up dialog.
grid = dijit.byId('grid');
grid.setStore(store);
//Grid used for exporting the data (containing additional fields) to a csv file.
var gridexport = dijit.byId('gridexport');
gridexport.setStore(store);
}
I have no idea what the problem is or how to debug this. Can anyone assist or offer suggestions?Thanks in advance,Joan