ThinkGeo.com    |     Documentation    |     Premium Support

Popups ReDisplaying After Closeout

Hi,



I just upgraded to Map Suite 8.0 - only updated the references, have not modified any code. Version 7.0 works correctly; however in Version 8.0, when I close a popup, it redisplays itself.



User clicks a feature on the map.

A popup appears.

User clicks the x button in the top right of the popup.

The popup disappears and then reappears.



I had worked with you to coordinate minimized the overlay switcher while the popups are active, so the following javascript is in play:


// THESE SCRIPTS ARE FOR CAPTURING THE POPUP CLOSED EVENT
// AND STARTING THE OVERLAYSWITCHER IN MINIMIZED MODE  
var Map;
function OnMapCreated(map) {
    Map = map;
    if (map.popups.length > 0) {
        var i = 0;
        for (i = 0; i < map.popups.length; i++) {
            OpenLayers.Event.stopObservingElement(map.popups<i>.closeDiv, “click”, OpenLayers.Function.bindAsEventListener(function () { this.hide(); }, map.popups<i>));</i></i>

            OpenLayers.Event.observe(map.popups<i>.closeDiv, “click”, OpenLayers.Function.bindAsEventListener(closeCallBack, map.popups<i>));</i></i>

            OpenLayers.Event.observe(map.popups<i>.closeDiv, “touchend”, OpenLayers.Function.bindAsEventListener(closeCallBack, map.popups<i>));</i></i>

        }
    }
 
    var hidden document.getElementById(“MainContent_HiddenOverlaySwitcherMinimizedState”);
    var value parseInt(hidden.value) - 2;
    if (value % 2 != 0) {
        var layerSwither map.getControl(“LayerSwitcher”);
        if (layerSwither) {
            layerSwither.minimizeControl();
        }
        hidden.value 1;
    }
    else {
        hidden.value 0;
    }
}
 
function closeCallBack() {
    var item_index;
    for (item_index 0; item_index < Map.popups.Length; item_index++) {                
        Map.popups[item_index].hide();
    }            
    __doPostBack(’<!–pdatePanelExceptionsGridView.ClientID–>’, “PopupClosed”);
    this.hide();
}


Can you please help me figure out what is going on?



Thanks,

Treasa


Hi Treasa, 
  
 Why we add these code for? Does that for fix some bug like cannot close popup? 
  
 I used your code but haven’t succeed reproduce this exception, then I removed the code and found in IE the close works well. 
  
 Please let me know more detail for reproduce it. 
  
 Regards, 
  
 Don

Hi Treasa,



I did some modifications based on your codes, would you please get the attached file and have a try?

In the sample codes, I did some modifications as seems there are some errors which happens no matter the v7 or v8. So, I am wondering how those codes would work fine in v7? The below are the codes what I modified:



1. The “popups” is an array type property of the map. So, we should use some codes like map.popups to get the sub element.

2. Seems we should change “if (value % 2 != 0)” to “if (value % 2 != 0)”.

3. The “Length” should be lower-case in “Map.popups.Length”.



The attached codes works fine in my end, please check it.

Any questions don’t hesitate to let us know.



Thanks,

Troy



Popup.txt (1.52 KB)

I tried the attached file, and the pop-ups are still re-displaying after closeout.



If I comment out the javascript line: __doPostBack(’<%=UpdatePanelExceptionsGridView.ClientID %>’, “PopupClosed”);

then, the popups close correctly; however, my custom code for handling closed popups does not work.



Below is the function that handles the PopupClosed event. I tested making this function completely empty, and the behavior is still the same - just the __doPostBack line is making the popups redisplay after closeout.


protected void UpdatePanelExceptionsGridView_Load(object sender, EventArgs e)
{
    if (Request["__EVENTARGUMENT"] == “PopupClosed”)
    {
        GridViewData.SelectedIndex = -1;
        Map1.Popups.Clear();
    }
// end UpdatePanelExceptionsGridView_Load

Any additional insight would be appreciated.
Thank you,
Treasa

Hi Treasa,



Sorry I didn’t have any insights but I created a sample for you based on your scenarios. Would you please modify the sample to recreate your issue and then send to us?



Thanks,

Troy

ClosePopup.zip (125 KB)

Hi Troy,



I was able to duplicate it with your project file. See attached.



Note: If I have the references set to 7.0, then the popups close correctly; but if I set the references to 8.0, then they keep redisplaying after closeout.



Thanks!

Treasa

001_ClosePopup.zip (129 KB)

Hi Treasa, 
  
 Thanks for the sample, we can narrow down the issue but need some days to test it as it is related more things. 
 I will update here if any progress. 
  
 Thanks, 
 Troy

Hi Troy, 
  
 Thanks for the update! Looking forward to a resolution within the next few days. 
  
 Treasa

Hi Treasa,



I found this issue is a little difference with the one I thought before. We can try the below codes to fix the issue:


//__doPostBack(’<%=UpdatePanelExceptionsGridView.ClientID %>’, “PopupClosed”);
__doPostBack(’<%=Map1.ClientID %>’, “PopupClosed”);

The reason is the map is the trigger for PanelExceptionsGridView, so we can just do a postback on map to reload the PanelExceptionsGridView.

Please let me know if this works for you.



Thanks,

Troy

Hi Troy, 
  
 That fixed it! 
  
 Thank you, 
 Treasa

Hi Treasa, 
  
 Good to hear it works. 
 Any questions, please feel free to let us know. 
  
 Troy

Treasa, 
  
 Good to hear it works. 
 Any questions, please feel free to let us know. 
  
 Troy