<esri:Query id="query"
outFields="[STATE_NAME,STATE_FIPS,SUB_REGION,STATE_ABBR,POP2000,POP2007]"
returnGeometry="false"
text="{stateName.text}"/>
</fx:Declarations>
<s:Panel title="Using Query tasks without maps">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:HGroup verticalAlign="middle">
<s:Label text="US state name: "/>
<s:TextInput id="stateName" text="Carolina"/>
<s:Button click="queryTask.execute(query);" label="Get Details"/><esri:Query id="query"
outFields="[PROJECT_NAME, PROJECT_DESCRIPTION, ACRES, HABITAT_DESCRIPTION, GPRA_CATEGORY, RESTORATION_TECHNIQUE, LEAD_PARTNER]"
returnGeometry="false"
objectids="*"/>
<s:RadioButtonGroup id="optiongroup"/>
</fx:Declarations>
<s:Panel title="NEP Project Information">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:HGroup verticalAlign="middle">
<mx:FormItem label="Search for NEP Information">
<s:ComboBox id="nepName" dataProvider="{NEP_NAME}" prompt="Select NEP" enabled="true"/>
</mx:FormItem><?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
xmlns:s="library://ns.adobe.com/flex/spark"
pageTitle="NEP Project Information">
<!--
This sample shows how to query the server and displaying
the result in a datagrid.
The query is sent using the execute() method on a QueryTask.
This sample sets up a QueryTask (what layer on what server to query).
When the user clicks the "Get Details" button, a Query is sent with
the user-provided text to search for.
Meanwhile a DataGrid has been created which listens for the results
(using executeLastResult) from the querytask.
-->
<s:layout>
<s:VerticalLayout horizontalAlign="center" paddingTop="25"/>
</s:layout>
<fx:Script>
<![CDATA[
public function get where():String
public function set where(value:String):void
public function set csvName(value:String):void
{
_csvName = value;
}
public function set csvSeperator(value:String):void
{
_csvSep = value;
}
public function set csvExportOptionLbl(value:String):void
{
_exp2csvBtnLbl = value;
}
public function set txtExportOptionLbl(value:String):void
{
_exp2txtBtnLbl = value;
}
public function set ExportButtonLbl(value:String):void
{
_exportButtonLbl = value;
}
private function exportTo(event:Event):void
{
try
{
var data:String;
var defaultFileName:String;
if(optiongroup.selectedValue == _exp2csvBtnLbl){
data = exportCSV(resultsGrid,_csvSep);
defaultFileName = _csvName + ".csv";
}else{
data = exportTXT(resultsGrid);
defaultFileName = _csvName + ".txt";
}
var fileReference:FileReference = new FileReference();
fileReference.save(data,defaultFileName);
}
catch(error:Error)
{
Alert.show(error.message);
}
}
private function exportCSV(dataGrid:DataGrid, csvSeparator:String=",", lineSeparator:String="\n"):String
{
try
{
var data:String = "";
var columnArray:Array = dataGrid.columns;
var columnCount:int = columnArray.length;
var dataGridColumn:DataGridColumn;
var header:String = "";
var headerGenerated:Boolean = false;
var dataProvider:Object = ObjectUtil.copy(dataGrid.dataProvider);
//trace(ObjectUtil.toString(dataProvider));
var rowCount:int = dataProvider.length;
var dp:Object = null;
var cursor:IViewCursor = dataProvider.createCursor();
var j:int = 0;
//loop through rows
while (!cursor.afterLast)
{
var object:Object = null;
object = cursor.current;
//loop through all columns for the row
for(var i:int = 0; i < columnCount; i++)
{
dataGridColumn = columnArray;
//Exclude column data which is invisible (hidden)
if(!dataGridColumn.visible)
{
continue;
}
if(dataGridColumn.itemRenderer)
{
data += "\""+ object[dataGridColumn.dataField] + "\"";
}else{
data += "\""+ dataGridColumn.itemToLabel(object)+ "\"";
}
if(i < (columnCount -1))
{
data += csvSeparator;
}
//generate header of CSV, only if it's not genereted yet
if (!headerGenerated)
{
header += "\"" + dataGridColumn.headerText + "\"";
if (i < columnCount - 1)
{
header += csvSeparator;
}
}
}
headerGenerated = true;
if (j < (rowCount - 1))
{
data += lineSeparator;
}
j++;
cursor.moveNext ();
}
//set references to null:
dataProvider = null;
columnArray = null;
dataGridColumn = null;
}
catch(error:Error)
{
return null;
Alert.show(error.message);
}
return (header + lineSeparator + data);
}
private function exportTXT(dataGrid:DataGrid, lineSeparator:String="\n"):String
{
try
{
var data:String = "";
var columnArray:Array = dataGrid.columns;
var columnCount:int = columnArray.length;
var dataGridColumn:DataGridColumn;
var header:String = "";
var headerGenerated:Boolean = false;
var dataProvider:Object = ObjectUtil.copy(dataGrid.dataProvider);
var rowCount:int = dataProvider.length;
var dp:Object = null;
var cursor:IViewCursor = dataProvider.createCursor();
var j:int = 0;
//loop through rows
while (!cursor.afterLast)
{
var object:Object = null;
object = cursor.current;
//loop through all columns for the row
for(var i:int = 0; i < columnCount; i++)
{
dataGridColumn = columnArray;
//Exclude column data which is invisible (hidden)
if(!dataGridColumn.visible)
{
continue;
}
if(dataGridColumn.itemRenderer)
{
data += "\""+ object[dataGridColumn.dataField] + "\"";
}else{
data += "\""+ dataGridColumn.itemToLabel(object)+ "\"";
}
if(i < (columnCount -1))
{
data += "\t";
}
//generate header of CSV, only if it's not genereted yet
if (!headerGenerated)
{
header += "\"" + dataGridColumn.headerText + "\"";
if (i < columnCount - 1)
{
header += "\t";
}
}
}
headerGenerated = true;
if (j < (rowCount - 1))
{
data += lineSeparator;
}
j++;
cursor.moveNext ();
}
//set references to null:
dataProvider = null;
columnArray = null;
dataGridColumn = null;
}
catch(error:Error)
{
return null;
Alert.show(error.message);
}
return (header + lineSeparator + data);
}
]]>
</fx:Script>
<fx:Declarations>
<esri:QueryTask id="queryTask"
url="http://134.67.224.174/ArcGIS/rest/services/NEPmap/nepmap1/MapServer/1"
useAMF="false"/>
<esri:Query id="query"
outFields="[PROJECT_NAME, PROJECT_DESCRIPTION, ACRES, HABITAT_DESCRIPTION, GPRA_CATEGORY, RESTORATION_TECHNIQUE, LEAD_PARTNER]"
returnGeometry="false"
text="{nepName.SelectedItem}"/>
<s:RadioButtonGroup id="optiongroup"/>
</fx:Declarations>
<s:Panel title="NEP Project Information">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:HGroup verticalAlign="middle">
<mx:FormItem label="Search for NEP Information">
<s:ComboBox id="nepName" dataProvider="{NEP_NAME}" prompt="Select NEP" enabled="true"/>
</mx:FormItem>
</s:HGroup>
<mx:DataGrid id="resultsGrid"
dataProvider="{queryTask.executeLastResult.attributes}"
visible="{queryTask.executeLastResult != null}">
<mx:columns>
<mx:DataGridColumn dataField="PROJECT_NAME" headerText="Project Name"/>
<mx:DataGridColumn dataField="PROJECT_DESCRIPTION" headerText="Project Description"/>
<mx:DataGridColumn dataField="ACRES" headerText="Number of Acres"/>
<mx:DataGridColumn dataField="GPRA_CATEGORY" headerText="Habitat Type"/>
<mx:DataGridColumn dataField="HABITAT_DESCRIPTION" headerText="Habitat Description"/>
<mx:DataGridColumn dataField="RESTORATION_TECHNIQUE" headerText="Restoration Technique"/>
<mx:DataGridColumn dataField="LEAD_PARTNER" headerText="Lead Partner"/>
</mx:columns>
</mx:DataGrid>
<s:controlBarContent>
<s:HGroup verticalAlign="middle">
<s:RadioButton label="{_exp2csvBtnLbl}" groupName="optiongroup" selected="true"/>
<s:RadioButton label="{_exp2txtBtnLbl}" groupName="optiongroup"/>
<s:Button label="{_exportButtonLbl}" id="Export" click="exportTo(event)" skinClass="ExportButtonSkin"/>
</s:HGroup>
</s:controlBarContent>
<s:controlBarLayout>
<s:HorizontalLayout horizontalAlign="right" paddingTop="3" paddingBottom="2" paddingRight="5" />
</s:controlBarLayout>
</s:Panel>
</s:Application>
Hi Kevin,
I ended up with the same error during the build process.. maybe I'm not doing something right?
Errors:
Encountered errors or warnings while building project NEPTableQuery.mxml.
NEPTableQuery.mxml: Could not resolve <esri:QueryTask> to a component implementation.
NEPTableQuery.mxml: Could not resolve <esri:Query> to a component implementation.
Entire MXML Code:<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags" xmlns:s="library://ns.adobe.com/flex/spark" pageTitle="NEP Project Information"> <!-- This sample shows how to query the server and displaying the result in a datagrid. The query is sent using the execute() method on a QueryTask. This sample sets up a QueryTask (what layer on what server to query). When the user clicks the "Get Details" button, a Query is sent with the user-provided text to search for. Meanwhile a DataGrid has been created which listens for the results (using executeLastResult) from the querytask. --> <s:layout> <s:VerticalLayout horizontalAlign="center" paddingTop="25"/> </s:layout> <fx:Script> <![CDATA[ public function get where():String public function set where(value:String):void public function set csvName(value:String):void { _csvName = value; } public function set csvSeperator(value:String):void { _csvSep = value; } public function set csvExportOptionLbl(value:String):void { _exp2csvBtnLbl = value; } public function set txtExportOptionLbl(value:String):void { _exp2txtBtnLbl = value; } public function set ExportButtonLbl(value:String):void { _exportButtonLbl = value; } private function exportTo(event:Event):void { try { var data:String; var defaultFileName:String; if(optiongroup.selectedValue == _exp2csvBtnLbl){ data = exportCSV(resultsGrid,_csvSep); defaultFileName = _csvName + ".csv"; }else{ data = exportTXT(resultsGrid); defaultFileName = _csvName + ".txt"; } var fileReference:FileReference = new FileReference(); fileReference.save(data,defaultFileName); } catch(error:Error) { Alert.show(error.message); } } private function exportCSV(dataGrid:DataGrid, csvSeparator:String=",", lineSeparator:String="\n"):String { try { var data:String = ""; var columnArray:Array = dataGrid.columns; var columnCount:int = columnArray.length; var dataGridColumn:DataGridColumn; var header:String = ""; var headerGenerated:Boolean = false; var dataProvider:Object = ObjectUtil.copy(dataGrid.dataProvider); //trace(ObjectUtil.toString(dataProvider)); var rowCount:int = dataProvider.length; var dp:Object = null; var cursor:IViewCursor = dataProvider.createCursor(); var j:int = 0; //loop through rows while (!cursor.afterLast) { var object:Object = null; object = cursor.current; //loop through all columns for the row for(var i:int = 0; i < columnCount; i++) { dataGridColumn = columnArray; //Exclude column data which is invisible (hidden) if(!dataGridColumn.visible) { continue; } if(dataGridColumn.itemRenderer) { data += "\""+ object[dataGridColumn.dataField] + "\""; }else{ data += "\""+ dataGridColumn.itemToLabel(object)+ "\""; } if(i < (columnCount -1)) { data += csvSeparator; } //generate header of CSV, only if it's not genereted yet if (!headerGenerated) { header += "\"" + dataGridColumn.headerText + "\""; if (i < columnCount - 1) { header += csvSeparator; } } } headerGenerated = true; if (j < (rowCount - 1)) { data += lineSeparator; } j++; cursor.moveNext (); } //set references to null: dataProvider = null; columnArray = null; dataGridColumn = null; } catch(error:Error) { return null; Alert.show(error.message); } return (header + lineSeparator + data); } private function exportTXT(dataGrid:DataGrid, lineSeparator:String="\n"):String { try { var data:String = ""; var columnArray:Array = dataGrid.columns; var columnCount:int = columnArray.length; var dataGridColumn:DataGridColumn; var header:String = ""; var headerGenerated:Boolean = false; var dataProvider:Object = ObjectUtil.copy(dataGrid.dataProvider); var rowCount:int = dataProvider.length; var dp:Object = null; var cursor:IViewCursor = dataProvider.createCursor(); var j:int = 0; //loop through rows while (!cursor.afterLast) { var object:Object = null; object = cursor.current; //loop through all columns for the row for(var i:int = 0; i < columnCount; i++) { dataGridColumn = columnArray; //Exclude column data which is invisible (hidden) if(!dataGridColumn.visible) { continue; } if(dataGridColumn.itemRenderer) { data += "\""+ object[dataGridColumn.dataField] + "\""; }else{ data += "\""+ dataGridColumn.itemToLabel(object)+ "\""; } if(i < (columnCount -1)) { data += "\t"; } //generate header of CSV, only if it's not genereted yet if (!headerGenerated) { header += "\"" + dataGridColumn.headerText + "\""; if (i < columnCount - 1) { header += "\t"; } } } headerGenerated = true; if (j < (rowCount - 1)) { data += lineSeparator; } j++; cursor.moveNext (); } //set references to null: dataProvider = null; columnArray = null; dataGridColumn = null; } catch(error:Error) { return null; Alert.show(error.message); } return (header + lineSeparator + data); } ]]> </fx:Script> <fx:Declarations> <esri:QueryTask id="queryTask" url="http://134.67.224.174/ArcGIS/rest/services/NEPmap/nepmap1/MapServer/1" useAMF="false"/> <esri:Query id="query" outFields="[PROJECT_NAME, PROJECT_DESCRIPTION, ACRES, HABITAT_DESCRIPTION, GPRA_CATEGORY, RESTORATION_TECHNIQUE, LEAD_PARTNER]" returnGeometry="false" text="{nepName.SelectedItem}"/> <s:RadioButtonGroup id="optiongroup"/> </fx:Declarations> <s:Panel title="NEP Project Information"> <s:layout> <s:VerticalLayout/> </s:layout> <s:HGroup verticalAlign="middle"> <mx:FormItem label="Search for NEP Information"> <s:ComboBox id="nepName" dataProvider="{NEP_NAME}" prompt="Select NEP" enabled="true"/> </mx:FormItem> </s:HGroup> <mx:DataGrid id="resultsGrid" dataProvider="{queryTask.executeLastResult.attributes}" visible="{queryTask.executeLastResult != null}"> <mx:columns> <mx:DataGridColumn dataField="PROJECT_NAME" headerText="Project Name"/> <mx:DataGridColumn dataField="PROJECT_DESCRIPTION" headerText="Project Description"/> <mx:DataGridColumn dataField="ACRES" headerText="Number of Acres"/> <mx:DataGridColumn dataField="GPRA_CATEGORY" headerText="Habitat Type"/> <mx:DataGridColumn dataField="HABITAT_DESCRIPTION" headerText="Habitat Description"/> <mx:DataGridColumn dataField="RESTORATION_TECHNIQUE" headerText="Restoration Technique"/> <mx:DataGridColumn dataField="LEAD_PARTNER" headerText="Lead Partner"/> </mx:columns> </mx:DataGrid> <s:controlBarContent> <s:HGroup verticalAlign="middle"> <s:RadioButton label="{_exp2csvBtnLbl}" groupName="optiongroup" selected="true"/> <s:RadioButton label="{_exp2txtBtnLbl}" groupName="optiongroup"/> <s:Button label="{_exportButtonLbl}" id="Export" click="exportTo(event)" skinClass="ExportButtonSkin"/> </s:HGroup> </s:controlBarContent> <s:controlBarLayout> <s:HorizontalLayout horizontalAlign="right" paddingTop="3" paddingBottom="2" paddingRight="5" /> </s:controlBarLayout> </s:Panel> </s:Application>
Thanks for your help,
Alison