Как добавить более одной горячей точки в элемент управления ImageMap в коде позади (программно) - PullRequest
0 голосов
/ 14 ноября 2010

Мое простое приложение упорядочивает веб-ссылки на изображении и в зависимости от типа изображения количество веб-ссылок различается. Я использую элемент управления ImageMap и добавляю код за горячими точками. Координаты и URL-адреса получают из базы данных. Ниже есть код:

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);
    }
}

Проблема в том, что когда я запускаю приложение и у меня активна только одна ссылка (но в этом конкретном объекте DataTable есть 11 строк (ссылок)).

Ниже 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>

Было добавлено 11 горячих точек, но каждая из них имеет одинаковые координаты и идентификатор в строке URL. Может кто-нибудь объяснить мне, что произошло и как программно добавить более одной горячей точки в ImageMap.

1 Ответ

2 голосов
/ 14 ноября 2010

Вы постоянно ссылаетесь на один и тот же PolygonHotSpot объект. Вы должны создавать новый для каждой итерации вашего цикла. то есть попробуйте заменить свою функцию следующим:

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);
    }
}
...