[Mapguide_users] Re: OnSelection Event?
Kori Maleski
kmale at telus.net
Sat Jan 6 20:26:19 EST 2007
Jim,
The following descripe the methods I use:
In the mainframe.templ, insert a function call in the OneSelectionChanged
Event:
function OnSelectionChanged() {
var selCount = mapFrame.GetSelectedCount();
SendSelection(); //ß------------------My new function call
if(hasStatusbar == 1)
sbFrame.SetFeatureSelectedMsg(FormatMessage((selCount >
1? "__#FEATURESSELECTED#__": "__#FEATURESELECTED#__"), new Array
(selCount, "unused")));
var stateChanged = false;
for(var i = 0; i < selectionAwareCmds.length; i++)
...
Then add your new function:
function SendSelection() {
var selCount = mapFrame.GetSelectedCount();
if(selCount != 0){
if(hasTaskpane != 0){
GetTaskFrame().GetTaskPane().location.href = homePage.replace
("/MapGuide/MapViewerNet/","") + "?SESSION=" + mapFrame.GetSessionId()
+ "&LOCALE=" + locale + "&MAPNAME=" + encodeURIComponent(mapFrame.GetMapName
()) + "&SELECTION=" + mapFrame.GetSelectionXML();
}
}
}
In this instance, the designated homepage of the taskpane will be sent the
specified UR parameters.
Following the edits to mainframe.templ
RESTART THE MAPGUIDE SERVER SERVICE you may have to restart IIS or whatever
webserver you are using.
In your recipient page (.NET flavour here:
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim l_sSelect As String
Dim l_sMapName As String
Dim l_sSession As String
l_sMapName = Request("MAPNAME")
l_sSession = Request("SESSION")
l_sSelect = Request("SELECTION")
If l_sSelect <> "" Then
'connect to the site
Dim l_oCred As New MgUserInformation(l_sSession)
Dim l_oSite As New MgSiteConnection()
l_oSite.Open(l_oCred)
'create services
Dim l_oFeatureSrvc As MgFeatureService = l_oSite.CreateService
(MgServiceType.FeatureService)
Dim l_oResourceSrvc As MgResourceService =
l_oSite.CreateService(MgServiceType.ResourceService)
'Create a temporary map runtime object, locate the layer
Dim l_oMap As New MgMap()
l_oMap.Open(l_oResourceSrvc, l_sMapName)
'Create a Selection object for the selection XML
Dim l_oSel As MgSelection = New MgSelection(l_oMap, l_sSelect)
Dim l_cSelLayers As MgReadOnlyLayerCollection =
l_oSel.GetLayers()
...
Then use the API to read the features as required.
Cheers,
Kori Maleski
Quoting Jim O'Leary <joleary.public at gmail.com>:
>
> Has anyone come up with a solution to the original question in this thread?
> How do you extract property names and values from the XML string that you
> get either from GetSelectionXML?
>
> Jason's clever code (May 4, 2006) captures the map's OnSelectionChanged
> event. You can then get the selections on the client side using
> GetSelectionXML(), which yields something like:
>
> <?xml version="1.0" encoding="UTF-8"?><FeatureSet
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="FeatureSet-1.0.0.xsd"> <Layer
> id="ea15105a-ffff-ffff-8003-00a0d13b3329"> <Class id="MarkupSchema:Markup">
>
> <ID>AQAAAA==</ID> </Class> </Layer></FeatureSet>
>
> I'm assuming that you put the keys and values in this string in a query
> string and submit a form to the server to recreate this XML string. You
> could also write this XML to a uniquely named file and then pass the
> filename to the server.
>
> Assuming that you can recreate this XML string one way or the other on the
> server, how do you then extract name = value pairs from the feature(s) that
> you have selected?
>
> Thanks.
>
>
> Willem Schwarte wrote:
> >
> > I've just read the dev manual and want to try to create a little test
> > program, to get me started on understanding the flow of events etc..
> >
> >
> >
> > What I want is:
> >
> >
> >
> > When something gets selected, read a property and call an asp-page in
> > another frame (in short).
> >
> >
> >
> > But how can I tell if something is selected?
> >
> > I suppose there is no onSelectionChanged event like in MG6.5. So this
> > would be done on a onClick? Where would I put the code for this?
> >
> >
> >
> > Willem
> >
> >
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/OnSelection-Event--tf1561860.html#a8199139
> Sent from the MapGuide Users mailing list archive at Nabble.com.
>
> _______________________________________________
> Mapguide_users mailing list
> Mapguide_users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide_users
>
More information about the Mapguide-users
mailing list