Laden...

[gelöst] Imagemap --> Hotspot Attribut geben

Erstellt von aleyaley vor 15 Jahren Letzter Beitrag vor 12 Jahren 1.159 Views
A
aleyaley Themenstarter:in
5 Beiträge seit 2008
vor 15 Jahren
[gelöst] Imagemap --> Hotspot Attribut geben

Hallo alle zusammen, ich habe ein Problem mit einer ImageMap, und zwar benötige ich für jeden Hotspot auf der Map (AREA-Element) ein selbst definiertes Attribut im html-tag mit dem ich informationen mitgeben will die ich dann per javascript in einem tooltip anzeigen will. bis jetz hab ich folgenden code der auch funktioniert:


ImageMap imgmap = new ImageMap();
            imgmap.Height = 400;
            imgmap.Width = 800;
            imgmap.ID = "imgmap";
            imgmap.Attributes.Add("name", "imgmap");
            imgmap.ImageUrl = "/diagramme/diagramm.Png";
            imgmap.HotSpotMode = HotSpotMode.Navigate;

            for (int i = 0; i < allPoints.Count; i++)
            {
                CircleHotSpot tempSpot = new CircleHotSpot();
                tempSpot.HotSpotMode = HotSpotMode.Navigate;
                tempSpot.NavigateUrl = "#";
                tempSpot.X = allPoints[i].X;
                tempSpot.Y = allPoints[i].Y;
                tempSpot.AlternateText = i.ToString();
                tempSpot.Radius = 5;
                imgmap.HotSpots.Add(tempSpot);
            }

            form1.Controls.Add(imgmap);

leider hat HotSpot nicht das die eigenschaft attribut, wie gehe ich da am besten vor? 🤔

Edit:
Habs nun selbst hin bekommen, so wollte ichs zwar eigentlich nicht machen aber wenigstens gehts^^


HtmlGenericControl imgmap = new HtmlGenericControl("img");
            imgmap.Attributes.Add("src", "/diagramme/diagramm.Png");
            imgmap.Attributes.Add("id", "imgmap");
            imgmap.Attributes.Add("width", "800");
            imgmap.Attributes.Add("height", "#400");
            imgmap.Attributes.Add("usemap", "#ImageMap");
            form1.Controls.Add(imgmap);

            HtmlGenericControl map = new HtmlGenericControl("map");
            map.Attributes.Add("name", "ImageMap");
            imgmap.Controls.Add(map);

            for (int i = 0; i < allPoints.Count; i++)
            {
                HtmlGenericControl tempArea = new HtmlGenericControl("area");
                tempArea.Attributes.Add("alt", "");
                tempArea.Attributes.Add("title", "");
                tempArea.Attributes.Add("href", "#");
                tempArea.Attributes.Add("coords", allPoints[i].X.ToString() + "," + allPoints[i].Y.ToString() + ",5");
                tempArea.Attributes.Add("shape", "circle");
                tempArea.Attributes.Add("daten", "~~~!!!==> <b>" + i.ToString() + "</b> <==!!!~~~"); //anstatt von i kann ein beliebiger string übergeben werden
                map.Controls.Add(tempArea);
            }

5.941 Beiträge seit 2005
vor 15 Jahren

Hallo aleyaley

Ich würde generell nicht mit ungültigen Attributen arbeiten, ausser es ist von aussen vorgegeben.

In diesem Fall darfst du dich auch nicht wundern, wenn du für die Lösung ein wenig "hacken" musst 😉

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

S
789 Beiträge seit 2007
vor 12 Jahren
Gleiches Problem Hotspot und onMouseover?

Uralt der Thread, aber gleiches Problem.

Ich habe es mit einem Benutzerdefinierten Steuerelement versucht, da ich beim Hotspot einen (gültigen) **onmouseover **benötige, den MS wohl irgendwie vergessen hat.

Mein Versuch bisher:



 public class myPoly : HotSpot
    {

        private string _onmouseover;
        private string _coords;
        private string _href;
        private string _title;
        private string _alt;
       
        /// <summary>
        /// Onmouseover Event
        /// </summary>
        public string onmouseover { get { return _onmouseover; } set { _onmouseover = value; } }

        /// <summary>
        /// Coords
        /// </summary>
        public string coods { get { return _coords; } set { _coords = value; } }

        /// <summary>
        /// HREF
        /// </summary>
        public string href { get { return _href; } set { _href = value; } }

        /// <summary>
        /// Title
        /// </summary>
        public string title { get { return _title; } set { _title = value; } }

        /// <summary>
        /// Alternative Text
        /// </summary>
        public string alt { get { return _alt; } set { _alt = value; } }



        public override string GetCoordinates()
        {
            return coods;
        }

        protected override string MarkupName
        {
            get { return "poly"; }
        }





        protected  void RenderContents(HtmlTextWriter writer)
        {
            string myWriter = String.Format("<area shape='{0}'" +
                                "coords='{1} '" +
                                "href='{2}'" +
                                "title='{3}'" +
                                "alt='{4}'" +
                                "onmouseover='{5}'", MarkupName, coods, href, title, alt, onmouseover
                                );
writer.Write(myWriter);
         

        }    


         
    }

Wäre ja alles schön und gut, aber RenderControls wird nicht aufgerufen,also kann ich auch nicht in das Steuerelement eingreifen.

Eigentlich bräuchte ich nur einen HotSpot mit zusätzlichem onmouseover.

Wie kann man das, außerhalb der o.G. Lösung noch machen, bzw. was ist an meinen Steuerelement oben falsch?
Ausgegeben wirds, nur ohnr onmouseover...

EDIT: also RenderContents gibt es beim HotSpot nicht.