ADF tutorials
ADFTutorials_CSharp\ScriptableControls\MapCoordinateDisplay\MapCoordinateDisplay.cs
// Copyright 2011 ESRI
// 
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
// 
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
// 
// See the use restrictions.
// 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MapCoordinateDisplay
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:MapCoordinateDisplay runat=server></{0}:MapCoordinateDisplay>")]
    [AjaxControlToolkit.ClientScriptResource("MapCoordinateDisplay.MapCoordinateDisplay",
        "MapCoordinateDisplay.javascript.MapCoordinateDisplay.js")]
    public class MapCoordinateDisplay : ESRI.ArcGIS.ADF.Web.UI.WebControls.WebControl
    {
        private Label m_displayLabel;

        public string Text
        {
            get
            {
                return StateManager.GetProperty("text") as string;
            }
            set
            {
                StateManager.SetProperty("text", value);
            }
        }

        /// <summary>The ID of the Map control to associate with this control.</summary>
        public string Map
        {
            get
            {

                return StateManager.GetProperty("map") as string;
            }
            set
            {
                StateManager.SetProperty("map", value);
            }
        }

        protected override void CreateChildControls()
        {
            Controls.Clear();
            base.CreateChildControls();

            m_displayLabel = new Label();
            m_displayLabel.ID = "DisplayLabel";
            m_displayLabel.Text = Text;
            m_displayLabel.Font.Bold = true;
            Controls.Add(m_displayLabel);
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            if (!base.IsAsync)
            {
                StringBuilder script = new StringBuilder();
                script.Append("Sys.Application.add_init(function() {");
                script.Append("$create(MapCoordinateDisplay.MapCoordinateDisplay,");
                script.AppendFormat("{{\"displayLabel\":$get('{0}')", m_displayLabel.ClientID);
                script.AppendFormat("}}, null, {{\"map\":\"{0}\"}}, $get('{1}'));", Map, ClientID);
                script.AppendLine("});");

                ScriptManager.RegisterStartupScript(this, typeof(MapCoordinateDisplay), this.ClientID + "_startup", script.ToString(), true);
            }
        }
    }
}