ArcGIS Server 开发指南:基于Flex和.NET(2)——高级功能
来源:互联网 发布:广州恒大淘宝足球官网 编辑:程序博客网 时间:2024/05/22 13:29
1 编辑
1.步骤
建立与SDE与SQL server2005的连接,首先在数据库连接里面双击添加空间数据库连接(SQL server服务必须开启,且必须开启帐号和密码,我的是sa,root),如图:
建立完之后可以测试连接,如果成功则可以进行下一步操作:新建(导入)要素或者要素类(我这里是导入的):
因为在新建要素的时候会选择xy坐标系还有其他选项,因此我直接在原来的要素里面导入更方便xy坐标系统一,这里需要特别指出发布要素的三要素:
必须为ArcSDEGeodatabase数据,这里的理解是要素必须与数据库绑定,如果有一个没有绑定就不能发布成功(换言之就是mxd地图文档里面的要素必须都是来自空间数据库里面的要素)ArcSDE必须注册为版本,这里如果不能注册则到SQL server查询分析器里面查询一下四句:SQL> select * from sde.state_locks; SQL> select * fromsde.object_locks; SQL> select * from sde.layer_locks; SQL> select * fromsde.table_locks;如果查询有结果的就直接到表里去删除所有记录
ArcSOC账户必须拥有读写数据库的权利,这里我也是自己试出来的,最后给sde授权成功
在ArcMap中组织要素模板,该模板可自定义添加不同类型的要素
满足上面四个条件即可成功发布要素服务,如图:
第五步发布Geometryserver,这个服务是在测量地图距离,面积等操作必须的服务,创建时候直接默认下一步即可(我这里因为已经创建了一个Geometryserver,意思就是一个地图服务上只能创建一个Geometryserver服务)
最后在flex页面上如下:
<?xml version="1.0"encoding="utf-8"?>
<mx:Modulexmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="com.fusioncharts.components.*" layout="absolute"width="100%" height="100%"
xmlns:esri="http://www.esri.com/2008/ags"xmlns:layers="com.esri.ags.layers.*"creationComplete="init()">
<mx:Script >
<![CDATA[
import com.esri.ags.tasks.GeometryService;
import mx.controls.Alert;
import mx.events.FlexEvent;
protected function init():void
{
myEditor.featureLayers =[building,plane];
Alert.show("0");
}
]]>
</mx:Script>
<mx:VDividedBox height="100%" width="100%">
<mx:HBox width="100%" height="40"paddingTop="10" horizontalAlign="center">
<esri:Editor id="myEditor"
geometryService="{new GeometryService('http://localhost:8399/arcgis/rest/services/Geometry/GeometryServer')}"
map="{myMap}"
toolbarVisible="true"/>
</mx:HBox>
<esri:Mapid="myMap" wrapAround180="true">
<esri:extent>
<esri:Extent xmin="-126" ymin="24"xmax="-67" ymax="50">
<esri:SpatialReferencewkid="4326"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISDynamicMapServiceLayer
url="http://localhost:8399/arcgis/rest/services/ddddddd/MapServer">
</esri:ArcGISDynamicMapServiceLayer>
<esri:FeatureLayerid="building"
mode="snapshot"
outFields="*"
url="http://localhost:8399/arcgis/rest/services/features/FeatureServer/0"/>
<esri:FeatureLayer id="plane"
mode="snapshot"
outFields="*"
url="http://localhost:8399/arcgis/rest/services/features/FeatureServer/1"/>
</esri:Map>
</mx:VDividedBox>
</mx:Module>
说明:发布feature服务之后里面的层次关系,依次是【0,1,2,3,4。。。。。】我feature要素服务里面第一个是building,第二个是plane。初始化方法里面将FeatureLayer 放置到 myEditor里面则可显示出要素进行添加和编辑。最后在myEditor里面添加geometryService服务最后地图上面就可以在线编辑了。
2、源码实例:
<?xml version="1.0"encoding="utf-8"?>
<!-- 使用EditTool和FeatureLayer完成编辑功能 -->
<s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"keyDown="deleteKeyDownHandler(event)"
xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="655" minHeight="500"xmlns:esri="http://www.esri.com/2008/ags">
<fx:Declarations>
<esri:SimpleLineSymbolid="linesym" color="#ff0000" width="3" />
<esri:DrawToolid="drawTool" map="{map}" lineSymbol="{linesym}"drawEnd="onDrawEnd(event)"/>
<esri:EditToolid="editTool" map="{map}"
graphicsMoveStop="editTool_graphicsMoveHandler(event)"
vertexAdd="editTool_vertexAddDeleteMoveHandler(event)"
vertexDelete="editTool_vertexAddDeleteMoveHandler(event)"
vertexMoveStop="editTool_vertexAddDeleteMoveHandler(event)"
/>
</fx:Declarations>
<esri:Mapid="map" scaleBarVisible="false"logoVisible="false" width="100%"height="100%">
<esri:extent>
<esri:Extentid="socal"
xmin="-13471000"ymin="3834000" xmax="-12878000"ymax="4124000">
<esri:SpatialReferencewkid="102100"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISTiledMapServiceLayerurl="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
<!--<esri:ArcGISTiledMapServiceLayerurl="http://localhost/ArcGIS/rest/services/World/MapServer"/>-->
<esri:FeatureLayerid="featureLayer" mode="snapshot"
url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/2"/>
<!--http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/2-->
</esri:Map>
<s:HGrouptop="10" horizontalCenter="0">
<s:Buttonlabel="绘制多边形" cornerRadius="0" fontSize="13"click="drawGeometry();" />
<s:Buttonlabel="编辑" cornerRadius="0" fontSize="13"click="editGraphic()" />
</s:HGroup>
<fx:Script>
<![CDATA[
importcom.esri.ags.Graphic;
importcom.esri.ags.events.DrawEvent;
importcom.esri.ags.events.EditEvent;
importcom.esri.ags.geometry.Geometry;
importmypage.PopUpWindow;
importmx.managers.PopUpManager;
privatevar window:PopUpWindow=new PopUpWindow();
protectedfunction drawGeometry():void
{
editTool.deactivate();
featureLayer.removeEventListener(MouseEvent.CLICK,layer_clickHandler);
drawTool.activate(DrawTool.POLYLINE);
}
privatevar selectedGraphic:Graphic;
protectedfunction layer_clickHandler(event:MouseEvent):void
{
if(event.target is Graphic)
{
PopUpManager.addPopUp(window,this,false);
selectedGraphic= event.target as Graphic;
selectedGraphic.attributes.objectid="123";
editTool.activate(EditTool.EDIT_VERTICES| EditTool.MOVE, [event.target]);
}
}
protectedfunction editGraphic():void
{
drawTool.deactivate();
featureLayer.addEventListener(MouseEvent.CLICK,layer_clickHandler);
}
protectedfunction onDrawEnd(event:DrawEvent):void
{
//featureLayer.applyEdits([event.graphic],null,null);
}
privatefunction editTool_vertexAddDeleteMoveHandler(event:EditEvent):void
{
//featureLayer.applyEdits(null,[event.graphic],null);
}
privatefunction editTool_graphicsMoveHandler(event:EditEvent):void
{
//featureLayer.applyEdits(null,[event.graphics[0]],null);
}
privatefunction deleteKeyDownHandler(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.DELETE)
{
if(selectedGraphic !=null)
{
(selectedGraphic.parentas FeatureLayer).applyEdits(null,null,[selectedGraphic]);
selectedGraphic= null;
}
}
}
]]>
</fx:Script>
</s:Application>
2 WebServices
这里列出Flex端和服务器端的全部源码。
Flex源码:
<?xml version="1.0"encoding="utf-8"?>
<s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="955" minHeight="600"
creationComplete="init()">
<fx:Declarations>
<!--将非可视元素(例如服务、值对象)放在此处 -->
<mx:HTTPServiceid="check" url="../dataBase/Default.aspx"method="GET" result="resultLoginhandle(event)" >
<mx:request>
<name>{txt1.text}</name>
<pwd>{txt2.text}</pwd>
</mx:request>
</mx:HTTPService>
</fx:Declarations>
<fx:Script>
<![CDATA[
importmx.collections.ArrayCollection;
importmx.controls.Alert;
importmx.events.FlexEvent;
importmx.rpc.events.FaultEvent;
importmx.rpc.events.ResultEvent;
importmx.rpc.soap.mxml.WebService;
privatevar server:WebService;
[Bindable]
privatevar name1:String;
[Bindable]
privatevar password:String;
[Bindable]
privatevar ck:String;
[Bindable]
privatevar city:Array=new Array();
privatefunction init():void
{
server= new WebService();
server.wsdl= "http://localhost:6344/WebSite2/Service.asmx?wsdl"
server.loadWSDL();
server.addEventListener(ResultEvent.RESULT,callback);
server.Query("select* from dbo.tb_Admin","pipeline");
//server.addEventListener(ResultEvent.RESULT,onResult)
}
/*private function onResult(event:ResultEvent ):void{
//varxml:XML=new XML(event.result);
//Alert.show(event.result.toString());
}*/
privatefunction callback(event:ResultEvent):void
{
if(event.result&& event.result.Tables.pipeline.Rows)
{
varrows:ArrayCollection = event.result.Tables.pipeline.Rows;
datagrid.dataProvider= rows;
/*var xml:XML=new XML(event.result);
foreach ( var name:XML in xml..UserName ) {
city.push(name);
}
Alert.show(event.result.toString());*/
}
}
publicfunction resultLoginhandle(event:ResultEvent):void
{
varreturnValue:String=check.lastResult.result.state;
if(returnValue=="ok")
{
username.text=txt1.text+",欢迎回来!"
exitto();
// currentState="admin";
}
else
{
Alert.show("您的登录失败了","提示信息",Alert.OK,this,null,null,Alert.YES);
}
}
publicfunction faulthandle1(event:FaultEvent):void
{
Alert.show("登录时候出现错误","提示信息");
}
publicfunction exitto():void
{
panel.visible=false;
}
]]>
</fx:Script>
<s:DataGridid="datagrid" width="500" height="300"horizontalCenter="0" verticalCenter="0"/>
<mx:Canvasid="adminlogin" label="adminlogin" width="100%"height="100%">
<mx:Panelwidth="385" id="panel" height="214" title="管理员登录"x="92.5" y="213" fontSize="12"layout="absolute">
<mx:Labelx="69" y="28" text="用户名:"width="67"/>
<mx:Labelx="69" y="78" text="密 码:"width="67"/>
<mx:TextInputid="txt1" x="127" y="26"/>
<mx:TextInputid="txt2" x="127" y="76"displayAsPassword="true"/>
<mx:Buttonx="95" y="130" label="登录"click="check.send();"/>
<mx:Buttonx="202" y="130" label="取消"click="exitto()"/>
</mx:Panel>
<s:Labelx="14" y="20" id="username"/>
</mx:Canvas>
</s:Application>
Webservice源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Data;
using System.Web.Services;
using System.Xml;
[WebService(Namespace ="http://tempuri.org/")]
[WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]
/// <summary>
///CustomService 的摘要说明
/// </summary>
public class CustomService :System.Web.Services.WebService
{
publicCustomService()
{
//
//TODO:在此处添加构造函数逻辑
//
}
[WebMethod]
public DataTable Query(string sql, string tableName)
{
//OleDbConnection connection = newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Inetpub\wwwroot\webgis\data.mdb");
//OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\Inetpub\wwwroot\webgis\pipe.mdb");
OleDbConnection connection = newOleDbConnection(@"Provider=sqloledb;Data Source=PC-20120905MUCG;InitialCatalog=db_Blog;User Id=sa;Password=123;");
// OleDbConnection connection = newOleDbConnection(@"Provider=sqloledb;Data Source=PC-20120905MUCG;NetworkLibrary=DBMSSOCN;Initial Catalog=db_Blog;User ID=sa;Password=123;");
if (connection.State != ConnectionState.Open)
connection.Open();
OleDbCommand aCommand = new OleDbCommand(sql, connection);
OleDbDataReader reader = aCommand.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
dt.TableName = tableName;
return dt;
}
[WebMethod]
public string IsLogin(string name, string password)
{
//string SqlConnStr = @"DataSource=.\SQLEXPRESS;AttachDbFilename='D:\My Documents\Visual Studio2008\Projects\WebService1\WebService1\App_Data\Database1.mdf';IntegratedSecurity=True;User Instance=True";
//SqlConnection con = new SqlConnection(SqlConnStr);
OleDbConnection con = new OleDbConnection(@"Provider=sqloledb;DataSource=PC-20120905MUCG;Initial Catalog=db_Blog;User Id=sa;Password=123;");
string sql = "SELECT COUNT(*) FROM dbo.tb_Blog WHEREUserName='" + name + "' AND PassWord='" +password+"'";
OleDbCommand cmd = new OleDbCommand(sql);
cmd.Connection = con;
int val = 0;
string strurl = "";
try
{
con.Open();
object obj=cmd.ExecuteScalar();
val = Convert.ToInt32(obj);
}
catch (Exception ex)
{
throw (ex);
}
finally
{
con.Close();
con.Dispose();
con = null;
}
if (val == 1)
{
return "true";
//strurl="true";
}
else
{
return "false";
//strurl = "false";
}
//XmlDocument xmldoc = new XmlDocument();
//xmldoc.Load(strurl);
}
//[WebMethod]
//public string CheckWebsite(string website)
//{
// string xmlstr ="";
// string strurl ="http://now.net.cn/domain/domaincheck.php?query=" + website;
// XmlDocument xmldoc = newXmlDocument();
// xmldoc.Load(strurl);
// XmlNode xn =xmldoc.SelectSingleNode("response/result/msg");
// xmlstr += xn.InnerText;
// return xmlstr;
//}
}
3 Flex分页及复选框
Flex常见的分页做成组件,直接使用,下图为分页组件结构
MyPager源码:
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainerxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"width="400" height="300">
<fx:Declarations>
<!--将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Metadata>
[Event(name="PageChange",type="mypage.PageChangeEvent",bubbles="true",cancelable="true")]
</fx:Metadata>
<fx:Script>
<![CDATA[
importmypage.PageChangeEvent;
importmx.controls.Alert;
privatevar mRecordCount:int=0;
publicvar mPageSize:int =5;
privatevar mPageIndex:int =1;
[Bindable]
privatevar mPageCount:int = 0;
publicfunction method_l():void
{
mPageIndex=mPageIndex-1;
SetState();
OnPageChange();
}
publicfunction method_le():void
{
mPageIndex=1;
SetState();
OnPageChange();
}
publicfunction method_r():void
{
mPageIndex=mPageIndex+1;
SetState();
OnPageChange();
}
publicfunction method_re():void
{
mPageIndex=mPageCount;
SetState();
OnPageChange();
}
publicfunction method_select():void
{
mPageIndex= c_select.selectedItem.data;
SetState();
OnPageChange();
}
publicfunction get PageIndex():int
{
returnmPageIndex;
}
//设置记录总数
publicfunction set RecordCount(count:int):void
{
mRecordCount=count;
if(count>0)
{
SetState();
}
}
privatefunction SetState():void
{
if(mRecordCount%mPageSize> 0)
{
mPageCount= mRecordCount/mPageSize+1;
}
else
{
mPageCount= mRecordCount/mPageSize;
}
varpages:Array = new Array();
for(vari:int =1;i<=mPageCount;i++)
{
pages.push({label:i.toString(), data:i-1});
}
c_select.dataProvider=pages;
c_select.selectedIndex=mPageIndex;
c_select1.text=mPageIndex.toString();
numericStepper.value=mPageIndex;
if(mPageCount>1)
{
c_select.enabled=true;
c_select1.enabled=true;
numericStepper.enabled=true;
c_l.enabled=true;
c_le.enabled=true;
c_r.enabled=true;
c_re.enabled=true;
if(mPageIndex==1)
{
c_l.enabled=false;
c_le.enabled=false;
}
if(mPageIndex== mPageCount)
{
c_r.enabled=false;
c_re.enabled=false;
}
}
else
{
c_select.enabled=false;
c_select1.enabled=false;
numericStepper.enabled=false;
c_l.enabled=false;
c_le.enabled=false;
c_r.enabled=false;
c_re.enabled=false;
}
pageinfo.text="共有:" + mRecordCount+"条/" + mPageCount+"页";
}
//获取记录总数
publicfunction get RecordCount():int
{
returnmRecordCount;
}
//打开分页控件
publicfunction Open():void{
mPageIndex=1;
OnPageChange();
}
//刷新当前页面
publicfunction Refresh():void
{
OnPageChange();
}
privatefunction OnPageChange():void
{
vare:PageChangeEvent = new PageChangeEvent(mPageIndex,mPageSize);
dispatchEvent(e);
}
privatefunction goindex():void
{
//mPageIndex= Number(c_select1.text);
mPageIndex=numericStepper.value;
SetState();
OnPageChange();
}
]]>
</fx:Script>
<mx:Labelx="200" y="10" width="175"fontSize="12" id="pageinfo"/>
<s:Buttonclick="method_le()" id="c_le" enabled="false" x="10"y="10" fontFamily="Georgia" width="24"height="24" minWidth="24" minHeight="24"icon="@Embed(source='images/button_begins.gif')"/>
<s:Buttonclick="method_l()" id="c_l" enabled="false"x="42" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24"icon="@Embed(source='images/button_prvs.gif')"/>
<mx:ComboBox
rowCount="10"change="method_select()" id="c_select"enabled="false"
x="74"y="10" width="54" disabledColor="#FCFF00"color="#FFBA00"></mx:ComboBox>
<s:Buttonclick="method_r()" id="c_r" enabled="false"x="136" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24" icon="@Embed(source='images/button_nexts.gif')"/>
<s:Buttonclick="method_re()" id="c_re" enabled="false"x="168" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24"icon="@Embed(source='images/button_ends.gif')"/>
<s:TextInputid="c_select1" x="38" y="39" width="29"height="22" />
<s:NumericStepperid="numericStepper" x="27" y="65"maximum="{mPageCount}" minimum="1"/>
<s:Buttonid="go" x="115" y="60" label="GO"click="goindex()"/>
<s:Labelx="10" y="61" height="22" text="第"/>
<s:Labelx="79" y="61" height="21" text="页"/>
</s:BorderContainer>
PageChageEvent源码:
packagemypage
{
import flash.events.Event;
import mx.collections.ArrayCollection;
import mx.events.IndexChangedEvent;
public class PageChangeEvent extendsflash.events.Event
{
public functionPageChangeEvent(pageindex:int,pagesize:int)
{
super("PageChange");
PageIndex= pageindex-1;
PageSize =pagesize;
}
public varPageIndex:int=0;
public varPageSize:int=0;
public functionFilter(list:Array):ArrayCollection
{
varnewlist:ArrayCollection = new ArrayCollection();
var start:int =PageSize*PageIndex;
var end:int =start+PageSize;
for(vari:int = start;i<end;i++)
{
if(i<list.length)
{
newlist.addItem(list[i]);
}
else
break;
}
return newlist;
}
}
}
Flex端测试源码:
<?xml version="1.0"encoding="utf-8"?>
<s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"xmlns:mypage="mypage.*">
<fx:Script>
<![CDATA[
importmx.collections.ArrayCollection;
importmx.collections.XMLListCollection;
importmx.controls.Alert;
importmx.events.FlexEvent;
importmx.rpc.events.FaultEvent;
importmx.rpc.events.ResultEvent;
importmx.rpc.soap.WebService;
importmypage.*;
[Bindable]
publicvar datagridLeftDp:ArrayCollection =new ArrayCollection();
[Bindable]
privatevar XMLClassListArray:Array;
protectedfunction application1_creationCompleteHandler(event:FlexEvent):void
{
varurl:String = "http://localhost:6344/WebSite2/Service.asmx?WSDL";
varwebService:WebService =new WebService();
webService.loadWSDL(url);
webService.addEventListener(ResultEvent.RESULT,onResult);
webService.addEventListener(FaultEvent.FAULT,onFault);
varstrSQL1:String="select * from tb_Admin";
webService.log(strSQL1);
}
protectedfunction onResult(event:ResultEvent):void
{
if(this.visible==false){
this.visible=true;
}
if(event.result)
varresultxml:XML=XML(event.result);
varxmllist:XMLList=resultxml.elements("ds");
varxmllistcollection:XMLListCollection=new XMLListCollection();
xmllistcollection.source= xmllist;
XMLClassListArray=xmllistcollection.toArray();
varnewpagechangevent:PageChangeEvent=newPageChangeEvent(0,pagebar.mPageSize);
leftGrid.dataProvider=newpagechangevent.Filter(XMLClassListArray);
pagebar.RecordCount=XMLClassListArray.length;
pagebar.Open();
/*if(event.result)
varresultxml:XML=XML(event.result);
varxmllist:XMLList=resultxml.elements("ds");
varxmllistcollection:XMLListCollection=new XMLListCollection();
xmllistcollection.source= xmllist;
datagridLeftDp=new ArrayCollection(xmllistcollection.toArray());
leftGrid.dataProvider= datagridLeftDp; */
}
protectedfunction onFault(event:FaultEvent):void
{
//TODO Auto-generated method stub
}
protectedfunction changepage(event:PageChangeEvent):void
{
leftGrid.dataProvider=event.Filter(XMLClassListArray);
//所有RadioButton置为没选中状态
for(var i:int = 0; i < 6; i++)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(i);
if(selectitemrender)
selectitemrender.selected=false;
}
ISsel=false;
//chball.selected=false;
}
/**
* 获取行序号
*/
protectedfunction Getorder(item:Object, column:AdvancedDataGridColumn):String
{
returngetorder(item,column.mx_internal::owner);
}
protectedfunction getorder(value:Object, dataGrid:Object):String
{
vararr:Array=dataGrid.dataProvider.source;
varindexNum:int=(arr.indexOf(value)+1);
returnindexNum.toString();
}
[Bindable]
publicvar ISsel:Boolean;
privatevar j:int=0;
publicfunction selectAll():void
{
ISsel=!ISsel;
if(ISsel)
{
zhixing();
/*var arr:Array=leftGrid.dataProvider.source;
//for(var i:int = 0; i < arr.length; i++)
if(j< arr.length)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender)
selectitemrender.selected=true;
varmid:String=arr[j].ID.toString();
queryg(mid);
} */
}
else
{
for(var j:int = 0; j < 6; j++)
{
varselectitemrender1:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender1)
selectitemrender1.selected=false;
}
}
}
protectedfunction zhixing():void
{
vararr:Array=leftGrid.dataProvider.source;
//for(var i:int = 0; i < arr.length; i++)
if(j< arr.length)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender)
selectitemrender.selected=true;
varmid:String=arr[j].ID.toString();
queryg(mid);
}
}
protectedfunction queryg(mid:String):void
{
Alert.show(mid);
j++;
zhixing();
}
publicfunction myselect(obj:Object):void
{varmyid:String=obj.ID.toString();
deleteobj.ID;
Alert.show(myid);}
]]>
</fx:Script>
<fx:Declarations>
<!--将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<!--<s:DataGridid="leftGrid" x="31" y="10" width="559"height="279"
alternatingRowColors="{[0xFFFFFF,0xEBEBEB]}"borderColor="0x878787"
contentBackgroundAlpha="0.7"creationCompleteEffect="showEffects"
dataProvider="{datagridLeftDp}"horizontalScrollPolicy="off"
selectionColor="0xBEDBF7"selectionMode="multipleRows"
sortableColumns="false"textAlign="center">
<s:columns>
<s:ArrayList>
<s:GridColumndataField="ID" headerText="发证单位"/>
<s:GridColumndataField="UserName" headerText="发证种类"/>
<s:GridColumndataField="PassWord" headerText="统计"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>-->
<mx:AdvancedDataGridid="leftGrid" dataProvider="{datagridLeftDp}" x="31"y="10" width="559" height="279" horizontalScrollPolicy="auto"
sortExpertMode="true" >
<mx:groupedColumns>
<mx:AdvancedDataGridColumn sortable="false"width="40" textAlign="center"backgroundColor="0xd1e3fb">
<mx:headerRenderer>
<fx:Component>
<mx:VBoxhorizontalAlign="center">
<mx:CheckBoxid="chball" selected="{outerDocument.ISsel}" change="outerDocument.selectAll()"/>
</mx:VBox>
</fx:Component>
</mx:headerRenderer>
<mx:itemRenderer>
<fx:Component>
<mx:CheckBoxchange="outerDocument.myselect(data)"/>
</fx:Component>
</mx:itemRenderer>
</mx:AdvancedDataGridColumn>
<mx:AdvancedDataGridColumn dataField="ID" headerText="土地使用者"sortable="false" width="160"/>
<mx:AdvancedDataGridColumndataField="UserName" headerText="区名" sortable="false"/>
<mx:AdvancedDataGridColumndataField="PassWord" headerText="土地证号" sortable="false" width="140"/>
</mx:groupedColumns>
</mx:AdvancedDataGrid>
<mypage:myPagerid="pagebar" x="71" y="342"height="40" PageChange="changepage(event)"/>
</s:Application>
MyPager源码:<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainerxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"width="400" height="300">
<fx:Declarations>
<!--将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Metadata>
[Event(name="PageChange",type="mypage.PageChangeEvent",bubbles="true",cancelable="true")]
</fx:Metadata>
<fx:Script>
<![CDATA[
importmypage.PageChangeEvent;
importmx.controls.Alert;
privatevar mRecordCount:int=0;
publicvar mPageSize:int =5;
privatevar mPageIndex:int =1;
[Bindable]
privatevar mPageCount:int = 0;
publicfunction method_l():void
{
mPageIndex=mPageIndex-1;
SetState();
OnPageChange();
}
publicfunction method_le():void
{
mPageIndex=1;
SetState();
OnPageChange();
}
publicfunction method_r():void
{
mPageIndex=mPageIndex+1;
SetState();
OnPageChange();
}
publicfunction method_re():void
{
mPageIndex=mPageCount;
SetState();
OnPageChange();
}
publicfunction method_select():void
{
mPageIndex= c_select.selectedItem.data;
SetState();
OnPageChange();
}
publicfunction get PageIndex():int
{
returnmPageIndex;
}
//设置记录总数
publicfunction set RecordCount(count:int):void
{
mRecordCount=count;
if(count>0)
{
SetState();
}
}
privatefunction SetState():void
{
if(mRecordCount%mPageSize> 0)
{
mPageCount= mRecordCount/mPageSize+1;
}
else
{
mPageCount= mRecordCount/mPageSize;
}
varpages:Array = new Array();
for(vari:int =1;i<=mPageCount;i++)
{
pages.push({label:i.toString(), data:i-1});
}
c_select.dataProvider=pages;
c_select.selectedIndex=mPageIndex;
c_select1.text=mPageIndex.toString();
numericStepper.value=mPageIndex;
if(mPageCount>1)
{
c_select.enabled=true;
c_select1.enabled=true;
numericStepper.enabled=true;
c_l.enabled=true;
c_le.enabled=true;
c_r.enabled=true;
c_re.enabled=true;
if(mPageIndex==1)
{
c_l.enabled=false;
c_le.enabled=false;
}
if(mPageIndex== mPageCount)
{
c_r.enabled=false;
c_re.enabled=false;
}
}
else
{
c_select.enabled=false;
c_select1.enabled=false;
numericStepper.enabled=false;
c_l.enabled=false;
c_le.enabled=false;
c_r.enabled=false;
c_re.enabled=false;
}
pageinfo.text="共有:" + mRecordCount+"条/" + mPageCount+"页";
}
//获取记录总数
publicfunction get RecordCount():int
{
returnmRecordCount;
}
//打开分页控件
publicfunction Open():void{
mPageIndex=1;
OnPageChange();
}
//刷新当前页面
publicfunction Refresh():void
{
OnPageChange();
}
privatefunction OnPageChange():void
{
vare:PageChangeEvent = new PageChangeEvent(mPageIndex,mPageSize);
dispatchEvent(e);
}
privatefunction goindex():void
{
//mPageIndex= Number(c_select1.text);
mPageIndex=numericStepper.value;
SetState();
OnPageChange();
}
]]>
</fx:Script>
<mx:Labelx="200" y="10" width="175"fontSize="12" id="pageinfo"/>
<s:Buttonclick="method_le()" id="c_le" enabled="false" x="10"y="10" fontFamily="Georgia" width="24"height="24" minWidth="24" minHeight="24"icon="@Embed(source='images/button_begins.gif')"/>
<s:Buttonclick="method_l()" id="c_l" enabled="false"x="42" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24"icon="@Embed(source='images/button_prvs.gif')"/>
<mx:ComboBox
rowCount="10"change="method_select()" id="c_select"enabled="false"
x="74"y="10" width="54" disabledColor="#FCFF00"color="#FFBA00"></mx:ComboBox>
<s:Buttonclick="method_r()" id="c_r" enabled="false"x="136" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24" icon="@Embed(source='images/button_nexts.gif')"/>
<s:Buttonclick="method_re()" id="c_re" enabled="false"x="168" y="10" fontFamily="Georgia"width="24" height="24" minWidth="24"minHeight="24"icon="@Embed(source='images/button_ends.gif')"/>
<s:TextInputid="c_select1" x="38" y="39" width="29"height="22" />
<s:NumericStepperid="numericStepper" x="27" y="65"maximum="{mPageCount}" minimum="1"/>
<s:Buttonid="go" x="115" y="60" label="GO"click="goindex()"/>
<s:Labelx="10" y="61" height="22" text="第"/>
<s:Labelx="79" y="61" height="21" text="页"/>
</s:BorderContainer>
PageChageEvent源码:
packagemypage
{
import flash.events.Event;
import mx.collections.ArrayCollection;
import mx.events.IndexChangedEvent;
public class PageChangeEvent extendsflash.events.Event
{
public functionPageChangeEvent(pageindex:int,pagesize:int)
{
super("PageChange");
PageIndex= pageindex-1;
PageSize =pagesize;
}
public varPageIndex:int=0;
public varPageSize:int=0;
public functionFilter(list:Array):ArrayCollection
{
varnewlist:ArrayCollection = new ArrayCollection();
var start:int =PageSize*PageIndex;
var end:int =start+PageSize;
for(vari:int = start;i<end;i++)
{
if(i<list.length)
{
newlist.addItem(list[i]);
}
else
break;
}
return newlist;
}
}
}
Flex端测试源码:
<?xml version="1.0"encoding="utf-8"?>
<s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)"xmlns:mypage="mypage.*">
<fx:Script>
<![CDATA[
importmx.collections.ArrayCollection;
importmx.collections.XMLListCollection;
importmx.controls.Alert;
importmx.events.FlexEvent;
importmx.rpc.events.FaultEvent;
importmx.rpc.events.ResultEvent;
importmx.rpc.soap.WebService;
importmypage.*;
[Bindable]
publicvar datagridLeftDp:ArrayCollection =new ArrayCollection();
[Bindable]
privatevar XMLClassListArray:Array;
protectedfunction application1_creationCompleteHandler(event:FlexEvent):void
{
varurl:String = "http://localhost:6344/WebSite2/Service.asmx?WSDL";
varwebService:WebService =new WebService();
webService.loadWSDL(url);
webService.addEventListener(ResultEvent.RESULT,onResult);
webService.addEventListener(FaultEvent.FAULT,onFault);
varstrSQL1:String="select * from tb_Admin";
webService.log(strSQL1);
}
protectedfunction onResult(event:ResultEvent):void
{
if(this.visible==false){
this.visible=true;
}
if(event.result)
varresultxml:XML=XML(event.result);
varxmllist:XMLList=resultxml.elements("ds");
varxmllistcollection:XMLListCollection=new XMLListCollection();
xmllistcollection.source= xmllist;
XMLClassListArray=xmllistcollection.toArray();
varnewpagechangevent:PageChangeEvent=newPageChangeEvent(0,pagebar.mPageSize);
leftGrid.dataProvider=newpagechangevent.Filter(XMLClassListArray);
pagebar.RecordCount=XMLClassListArray.length;
pagebar.Open();
/*if(event.result)
varresultxml:XML=XML(event.result);
varxmllist:XMLList=resultxml.elements("ds");
varxmllistcollection:XMLListCollection=new XMLListCollection();
xmllistcollection.source= xmllist;
datagridLeftDp=new ArrayCollection(xmllistcollection.toArray());
leftGrid.dataProvider= datagridLeftDp; */
}
protectedfunction onFault(event:FaultEvent):void
{
//TODO Auto-generated method stub
}
protectedfunction changepage(event:PageChangeEvent):void
{
leftGrid.dataProvider=event.Filter(XMLClassListArray);
//所有RadioButton置为没选中状态
for(var i:int = 0; i < 6; i++)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(i);
if(selectitemrender)
selectitemrender.selected=false;
}
ISsel=false;
//chball.selected=false;
}
/**
* 获取行序号
*/
protectedfunction Getorder(item:Object, column:AdvancedDataGridColumn):String
{
returngetorder(item,column.mx_internal::owner);
}
protectedfunction getorder(value:Object, dataGrid:Object):String
{
vararr:Array=dataGrid.dataProvider.source;
varindexNum:int=(arr.indexOf(value)+1);
returnindexNum.toString();
}
[Bindable]
publicvar ISsel:Boolean;
privatevar j:int=0;
publicfunction selectAll():void
{
ISsel=!ISsel;
if(ISsel)
{
zhixing();
/*var arr:Array=leftGrid.dataProvider.source;
//for(var i:int = 0; i < arr.length; i++)
if(j< arr.length)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender)
selectitemrender.selected=true;
varmid:String=arr[j].ID.toString();
queryg(mid);
} */
}
else
{
for(var j:int = 0; j < 6; j++)
{
varselectitemrender1:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender1)
selectitemrender1.selected=false;
}
}
}
protectedfunction zhixing():void
{
vararr:Array=leftGrid.dataProvider.source;
//for(var i:int = 0; i < arr.length; i++)
if(j< arr.length)
{
varselectitemrender:Object=leftGrid.indexToItemRenderer(j);
if(selectitemrender)
selectitemrender.selected=true;
varmid:String=arr[j].ID.toString();
queryg(mid);
}
}
protectedfunction queryg(mid:String):void
{
Alert.show(mid);
j++;
zhixing();
}
publicfunction myselect(obj:Object):void
{varmyid:String=obj.ID.toString();
deleteobj.ID;
Alert.show(myid);}
]]>
</fx:Script>
<fx:Declarations>
<!--将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<!--<s:DataGridid="leftGrid" x="31" y="10" width="559"height="279"
alternatingRowColors="{[0xFFFFFF,0xEBEBEB]}"borderColor="0x878787"
contentBackgroundAlpha="0.7"creationCompleteEffect="showEffects"
dataProvider="{datagridLeftDp}"horizontalScrollPolicy="off"
selectionColor="0xBEDBF7"selectionMode="multipleRows"
sortableColumns="false"textAlign="center">
<s:columns>
<s:ArrayList>
<s:GridColumndataField="ID" headerText="发证单位"/>
<s:GridColumndataField="UserName" headerText="发证种类"/>
<s:GridColumndataField="PassWord" headerText="统计"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>-->
<mx:AdvancedDataGridid="leftGrid" dataProvider="{datagridLeftDp}" x="31"y="10" width="559" height="279" horizontalScrollPolicy="auto"
sortExpertMode="true" >
<mx:groupedColumns>
<mx:AdvancedDataGridColumn sortable="false"width="40" textAlign="center"backgroundColor="0xd1e3fb">
<mx:headerRenderer>
<fx:Component>
<mx:VBoxhorizontalAlign="center">
<mx:CheckBoxid="chball" selected="{outerDocument.ISsel}" change="outerDocument.selectAll()"/>
</mx:VBox>
</fx:Component>
</mx:headerRenderer>
<mx:itemRenderer>
<fx:Component>
<mx:CheckBoxchange="outerDocument.myselect(data)"/>
</fx:Component>
</mx:itemRenderer>
</mx:AdvancedDataGridColumn>
<mx:AdvancedDataGridColumn dataField="ID" headerText="土地使用者"sortable="false" width="160"/>
<mx:AdvancedDataGridColumndataField="UserName" headerText="区名" sortable="false"/>
<mx:AdvancedDataGridColumndataField="PassWord" headerText="土地证号" sortable="false" width="140"/>
</mx:groupedColumns>
</mx:AdvancedDataGrid>
<mypage:myPagerid="pagebar" x="71" y="342"height="40" PageChange="changepage(event)"/>
</s:Application>
- ArcGIS Server 开发指南:基于Flex和.NET(2)——高级功能
- ArcGIS Server 开发指南:基于Flex和.NET(1)——基础功能
- ArcGIS Server 开发指南:基于Flex和.NET(3)——Flex和Javascript交互完全详解
- ArcGIS Server 开发指南:基于Flex和.NET(4)——Flex与Java通信方式完全详解
- Flex开发ArcGIS问题集锦一:如何配置基于Flex和.NET的ArcGIS Server开发环境
- ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)
- ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
- ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)
- 基于Flex移动和ArcGIS API for Flex开发移动GIS应用
- 基于ArcGIS Flex API开发Mobile应用
- ArcGIS.Server.9.3和ArcGIS API for Flex实现Identify的功能图查属性(六)
- ArcGis Server for Flex API3.0 新增功能及翻译
- 基于jQuery插件imgAreaSelect和ArcGIS server模仿实现百度地图的截图功能
- ArcGIS Server Flex API
- ArcGIS Server开发——标注
- ArcGIS Server开发——标注
- 细细品味Flex——BlazeDS开发指南
- Flex——BlazeDS开发指南
- 消息推送,客户端需要调用的方法
- 黑马程序员——删除ArrayList中的元素
- js正则表达式语法
- android使用getItemViewType时出现java.lang.ArrayIndexOutOfBoundsException的错误
- 网络封装
- ArcGIS Server 开发指南:基于Flex和.NET(2)——高级功能
- oracle数据库中的clob大字段同步到不同库之间的问题解决
- linux 查看文件夹下的文件个数(当前目录的文件数)
- 修改状态栏(StatusBar)图标(icon)(定制自己的状态栏)
- av_interleaved_write_frame 写入H264到mp4中,如果出现B帧,会返回-22 错误
- Android 禁止屏幕休眠和锁屏的方法
- asp实现读取数据库输出json代码
- 配置ImageLoader
- iOS切割字符串,并判断首字母是否为某一个字母