2009-01-07 81 views
0

我想創建一個ASP:ImageMap動態數量的熱點。我嘗試了下面的代碼,但它抱怨在圖像映射中嵌套了一箇中繼器。任何想法如何做到這一點?如何創建一個動態的ASP:ImageMap

<asp:ImageMap ID="imgMap" runat="server" ImageUrl="~/circles.png" 
        HotSpotMode="PostBack"> 
     <asp:Repeater runat="server" id="repeat" DataSource=<%#circles %>> 
      <asp:CircleHotSpot PostBackValue="<%#name %>" 
           Radius="<%#r %>" 
           X="<%#x %>" 
           Y="<%#y %>" /> 
     </asp:Repeater> 
    </asp:ImageMap> 

(請忽略與數據綁定的問題。我以後會解決這些。)

回答

0

你不能在另一個服務器標籤內放置一箇中繼器。將熱點動態添加到ImageMap的方法是將它們動態添加到後面的代碼中。你應該能夠使用類似這樣的東西在你的頁面加載事件:

CircleHotSpot hotSpot = new CircleHotSpot(); 
hotSpot.PostBackValue = "xxxx"; 
hotSpot.X = xx; 
hotSpot.Y = yy; 
hotSpot.radius = r; 
imgMap.HotSpots.Add(hotSpot); 

請原諒的事實,確切的語法可能是有點過,因爲我沒有寫在一段時間這個代碼,但你應該明白。如果您想添加多個熱點,您可以將這段代碼粘貼到for/foreach循環中,並遍歷您想要變成熱點的項目列表。

0

你需要使用一個服務器控件或可能你做它在普通的HTML? 類似的東西:

<map id="map1"> 
    <asp:Repeater ID="rep" runat="server"> 
    <ItemTemplate> 
    <div align=center> 

    <area href="<%# DataBinder.Eval(Container.DataItem,"page")%>" 
    shape="circle" 
    coords="<%# DataBinder.Eval(Container.DataItem,"Coords")%>" 
    alt="area1" /> 
    </ItemTemplate> 
    </asp:Repeater> 
    </map> 
    <img src="Images/HPIM1784.jpg" alt="bajs" usemap="#map1" /> 
+0

我在發帖後想過這樣做。我希望頁面在單擊區域時發回。我想我可以使用隱藏的控件和__post_back javascript函數來僞造它。 – 2009-01-08 01:15:49