2010-11-13 1 views
0

Mon application simple arrange weblinks sur l'image et selon le type d'image nombre de weblinks est différent. J'utilise le contrôle ImageMap et ajoute du code derrière les points chauds. Les coordonnées et l'URL proviennent de la base de données. Ci-dessous il y a un code:Comment ajouter plus d'un point chaud au contrôle ImageMap dans le code derrière (par programme)

protected void ArrangeMapHotSpots(int voivodshipId) 
{ 
    PolygonHotSpot hotSpot = new PolygonHotSpot(); 
    DataTable ImageMapDT = EzdrojeDB.ImageMapCoordinates(voivodshipId); // get data form DB 
    foreach (DataRow dr in ImageMapDT.Rows) 
    { 

     hotSpot.HotSpotMode = HotSpotMode.Navigate; 
     hotSpot.AlternateText = "alt_text"; 
     hotSpot.Coordinates = dr["map_coord"].ToString(); 
     hotSpot.NavigateUrl = "~/resort.aspx?id=" + dr["id"].ToString(); 
     ImageMap1.HotSpots.Add(hotSpot); 
    } 
} 

Le problème est quand je lance l'application et je n'ai qu'un lien actif (mais il y a 11 lignes (liens) dans cet objet particulier DataTable).

Ci-dessous le code html:

<img id="ContentPlaceHolder1_ImageMap1" src="Images/VoivodMaps/dolnoslaskie.png" usemap="#ImageMapContentPlaceHolder1_ImageMap1" /> 

<map name="ImageMapContentPlaceHolder1_ImageMap1" id="ImageMapContentPlaceHolder1_ImageMap1"/> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
area shape="poly" coords="303,427,444,447" href="resort.aspx?id=11" title="alt_text" alt="alt_text" /> 
</map> 

Il y a eu 11 points chauds ajoutés, mais chacun d'eux a les mêmes coordonnées et id dans la chaîne url. Quelqu'un peut-il m'expliquer ce qui s'est passé et comment ajouter plus d'un point chaud à ImageMap par programme.

Répondre

2

Vous référencez continuellement le même objet PolygonHotSpot. Vous devriez en créer un nouveau pour chaque itération de votre boucle. c'est-à-dire essayez de remplacer votre fonction par ce qui suit:

protected void ArrangeMapHotSpots(int voivodshipId) 
{ 
    PolygonHotSpot hotSpot; 
    DataTable ImageMapDT = EzdrojeDB.ImageMapCoordinates(voivodshipId); // get data form DB 
    foreach (DataRow dr in ImageMapDT.Rows) 
    { 
     hotSpot = new PolygonHotSpot(); 
     hotSpot.HotSpotMode = HotSpotMode.Navigate; 
     hotSpot.AlternateText = "alt_text"; 
     hotSpot.Coordinates = dr["map_coord"].ToString(); 
     hotSpot.NavigateUrl = "~/resort.aspx?id=" + dr["id"].ToString(); 
     ImageMap1.HotSpots.Add(hotSpot); 
    } 
} 
Questions connexes