<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hmm, I see.<br>
I am using an alternative API that has those properties, so I didn't
verify that the properties were actually exposed.<br>
<br>
<pre class="moz-signature" cols="72">Regards, Kenneth, GEOGRAF A/S
</pre>
<br>
<br>
Maksim Sestic skrev:
<blockquote cite="mid:13768007.post@talk.nabble.com" type="cite">
  <pre wrap="">Hi Kenneth,

It would be much easier if MgLayer had Filter property in first place :-)
Alas, it doesn't (MGE 2008). It has FeatureSourceId and FeatureClassName
properties, though, but not Filter property (and I have no clue why's that,
probably somebody forgot to expose it).

So I guess I still have to drill down the layer's XML definition to change
the element value. But then, how do I change layer definition of runtime map
and get it refreshed in Ajax viewer?

Regards,
Maksim Sestic


Kenneth, GEOGRAF A/S wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">When the MapDefinition is turned into a runtime Map, it copies 
properties from the layerdefinition.
This means that you will see no changes, even if you choose to modify 
the LayerDefinition.

You must modify the layer copy in the runtime map.
Fortunately, that is actually easier than what you are doing now:

MgMap map = new MgMap();
map.Open("map", srv);

map.Layers("layername").Filter = "Column = 5";
map.Save();

Regards, Kenneth, GEOGRAF A/S



Maksim Sestic skrev:
    </pre>
    <blockquote type="cite">
      <pre wrap="">I think I'm having problems with changing existing dynamic layer's Filter
property (the one that filters data from FeatureSource) using .NET.
Here's
the approach that doesn't report any error, but when I refresh the map
there
are no changes to the layer - new filter doesn't get applied.

Dim layer As MgLayer = ...getting a MgLayer object...
Dim document As New XmlDocument
document.PreserveWhitespace = True
Dim byteReader As MgByteReader =
resources.Service.GetResourceContent(layer.LayerDefinition)
document.LoadXml(byteReader.ToString)

Allright, it's all in XmlDocument now and then I do some parsing to
change
the Filter element. When I save the definition to XML file (just for
testing) everything's OK, structure and data is preserved and Filter
element
is set to some new value.

' Saving XmlDocument to memory stream
Dim stream As MemoryStream = New System.IO.MemoryStream()
document.Save(stream)

' Converting stream to byte array 
Dim byteArray() As Byte = stream.ToArray

' Converting byte array to String (BOM included, otherwise SetResource
raises an error while parsing XML)
Dim outerXml As String = System.Text.Encoding.UTF8.GetString(byteArray,
0,
byteArray.Length - 1)

' Converting String to byte array with UTF-8 encoding 
byteArray = System.Text.Encoding.UTF8.GetBytes(outerXml)

' Creating MgByteSource out of byte array, setting appropriate MimeType
Dim byteSource As MgByteSource = New MgByteSource(byteArray,
byteArray.Length)
byteSource.SetMimeType(MgMimeType.Xml)

' Getting MgResourceIdentifier corresponding to current SessionId and
existing Layer name
Dim resourceId As New
MgResourceIdentifier(String.Format("Session:{0}//{1}.LayerDefinition",
sessionId, layerName))

' Setting a resource (without Header) using MgResourceIdentifier and byte
source
resources.Service.SetResource(resourceId, byteSource.GetReader, Nothing)

' I don't know if this is necessary, but still...
layer.ForceRefresh()


Now, when I call parent.parent.Refresh() on the client side nothing
happens.
What am I doing wrong here?

Regards,
Maksim Sestic




 
  
      </pre>
    </blockquote>
    <pre wrap="">_______________________________________________
mapguide-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:mapguide-users@lists.osgeo.org">mapguide-users@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/mapguide-users">http://lists.osgeo.org/mailman/listinfo/mapguide-users</a>


    </pre>
  </blockquote>
  <pre wrap=""><!---->
  </pre>
</blockquote>
</body>
</html>