Select to view content in your preferred language

dynamic layer with Join

1816
0
09-19-2012 08:18 AM
xiaowenyang
Deactivated User
I am trying to add a dynamic service layer, join the layer with table from a Postgre SQL database(the connection has been saved in dynamic work space). However, if I comment out the join function, the layer can be added successfully. When the join function is addedin, the layer disappears. Can anyone help me on this?

Thank you so much. Below is the code.

   protected function CreateDynamiclayer(event:MouseEvent):void
   {
   
   
    var InDynMapLyr: ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer();   
    InDynMapLyr.url = "http://????:6080/arcgis/rest/services/Changwat/MapServer";
    InDynMapLyr.dynamicLayerInfos = dynLyrInfos;
    map.addLayer(InDynMapLyr);
   
    var sWorkspaceID:String = "postgresql";
    var sTablename:String = "PROV03To09INDEX";
    var sJoinFieldname:String = "Prov_ID";
    var SpatialKey:String = "NewProv2";
   
    JoinDynamicLayer (sWorkspaceID,sTablename,sJoinFieldname, InDynMapLyr, SpatialKey);
       
   
   }

   private function JoinDynamicLayer(sWorkspaceID:String, sTablename:String,sJoinFieldname:String,dyn:ArcGISDynamicMapServiceLayer, SpatialKey:String ):void
   {   

    //var dli:DynamicLayerInfo=dyn.dynamicLayerInfos[0] as DynamicLayerInfo;
    var dynamicLayerInfosArr:Array;
   
    dynamicLayerInfosArr = dyn.createDynamicLayerInfosFromLayerInfos();
    var dli:DynamicLayerInfo = DynamicLayerInfo(dynamicLayerInfosArr[0]);
   
    //var dli:DynamicLayerInfo = dynLyrInfos[ 0 ];
    var preexistingLyrSrc:ILayerSource = dli.source;   
    var joinSrc:JoinDataSource = new JoinDataSource();
    joinSrc.joinType = JoinDataSource.LEFT_OUTER_JOIN;
    joinSrc.leftTableSource = preexistingLyrSrc;
    joinSrc.leftTableKey = SpatialKey;
   
    var newTblSrc:TableDataSource = new TableDataSource();
    newTblSrc.workspaceId = sWorkspaceID;
    newTblSrc.dataSourceName = sTablename;
    var newTblLyrSrc:LayerDataSource = new LayerDataSource();
    newTblLyrSrc.dataSource = newTblSrc;
   
    joinSrc.rightTableSource = newTblLyrSrc;
    joinSrc.rightTableKey = sJoinFieldname;
   
    var newDynLyrSrc:LayerDataSource = new LayerDataSource();
    newDynLyrSrc.dataSource = joinSrc;
    dli.source = newDynLyrSrc;
    dynLyrInfos = [ dli ];
    Alert.show ("joined dynamic layer");
   
    //dyn.dynamicLayerInfos = [dli];
   

   
    //dynLyrInfos = [ dli ];
   
   }

   <fx:Declarations>
  <fx:Array id="dynLyrInfos">
   <esri:DynamicLayerInfo defaultVisibility="true" layerId="0">
    <esri:LayerMapSource mapLayerId="0"/> 
   </esri:DynamicLayerInfo>
  </fx:Array>
    </fx:Declarations>
Tags (2)
0 Kudos
0 Replies