Set FDO layer filter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi all,
I need to set a fillter for all fdo layer in a map (as Query to filter data command).
Dim objLayers As MgLayerCollection = objMap.GetLayers()
For Each objLayer As MgLayerBase In objLayers
Dim objLayerDefId As MgResourceIdentifier = objLayer.GetLayerDefinition()
Dim objByteReader As MgByteReader = objResourceServ.GetResourceContent(objLayerDefId)
Dim objXML As XmlDocument = New XmlDocument()
Dim objSerializer As New XmlSerializer(GetType(LayerDefinition))
Dim objLayerV As LayerDefinition = TryCast(objSerializer.Deserialize(New StringReader(objByteReader.ToString)), LayerDefinition)
Dim objVectorLayerDef As VectorLayerDefinitionType = TryCast(objLayerV.Item, VectorLayerDefinitionType)
objVectorLayerDef.Filter = strFilter
Dim objXs As New XmlSerializer(objLayerV.[GetType]())
Dim objWriter As New StringWriter()
objXs.Serialize(objWriter, objLayerV)
Dim objBuffer As Byte() = StringToBytes(objWriter.ToString())
Dim objSource As New MgByteSource(objBuffer, objBuffer.Length)
' Update the resource in Map
objResourceServ.SetResource(objLayer.LayerDefinition, objSource.GetReader(), Nothing)
objLayer.ForceRefresh()
Next
Regards
Matteo Conte