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>


0 0
原创粉丝点击