ThinkGeo.com    |     Documentation    |     Premium Support

Immediately setting the draw mode after postback

 I need to set the drawmode immediately after postback.  


openMarker() in the following code = Map1.SetDrawMode('Point');




 
if (((Button)sender).Text.ToUpper().Contains("ANOTHER"))
            {
                ClientScript.RegisterStartupScript(GetType(), "AddAnotherMarker", "openMarker();", true);
            }






When I do this, it looks like there is a js error as the map turns grey.   The error is:



Uncaught TypeError: Object #<HTMLDivElement> has no method 'SetDrawMode' 


Any ideas on what I can do to set the drawmode after a postback?

 



 That actually was suppose to be 



Uncaught TypeError: Object #<HTMLDivElement> has no method 'SetDrawMode'


 Hello Chad,


 
Thanks for your post, your code has no problem, I have tested it and everything is right, please get the attached file and have a try.
 
Maybe it's because you need reference something, could you please compare the attached file and your code?
 
Please let us know if you still can't make it work.
 
Regards,
 
Gary

Overlays.zip (2.93 KB)

Hi Gary, 


 
I am sorry for getting back to you so late.  I never got notification that you had replied.  I must not have checked the box.



I am trying to run the js in the button click event on the server side. The js is working, because I have tried alert("this") and it is fine, but I believe that Map1 is not available when I try and call it.



I don't want to run it on every page load, only when a certain button is clicked.  If someone wants to add another marker, then I want to save the current marker to the database and then be in "Create Marker Mode" so they can add another.
 


 

 



 Hello Chad,


 
Thanks for your further information.
 
This error is because RegisterStartupScript will add the openmarker function just before our javascript to initialize the Map control, so it will throw exception.
 
But you didn't need to use RegisterStartupScript to do this job, you can have some other solution.
 
1. Use EditOverlay. Please see the code below, just after you saved your marker info, then set the TrackMode.

        protected void Button2_Click(object sender, EventArgs e)
        {
            //Save the marker and do some other things.
            Map1.EditOverlay.TrackMode = TrackMode.Point;
        }

 
2. Use Ajax to set the DrawMode in js.

        function receiveServerData(columnValue){
              Map1.SetDrawMode('Point');
        }

 
These two ways both work fine, please feel free to let us know if you have more queries.
 
Regards,
 
Gary