2011-06-05 25 views
0

的屬性我有這樣的HTML標籤更改值和收集asp.net

<ul id="ul1" runat=server> 
    <li id="li1" runat=server> <a href="link" id="a1" runat=server > <img src="link id="img1" runat=server></img></a></li> 
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li> 
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li> 
    <li id="li2" runat=server> <a href="link" id="a2" runat=server > <img src="link id="img2" runat=server></img></a></li> 
    . 
    . 
</ul> 

我得到每個控件的屬性從一個XML文件中的「禮」。 我想循環使用<li>集合並更改每個控件的屬性。 比如:XML的第一個孩子是返回第一個圖像的src,第一<a>的src ... 的XML seconed孩子返回seconed圖片src ....

如果我試圖做它與jquery,頁面是第一次加載頁面defult屬性(那些誰沒有在飛行中創建),並剛剛加載頁面後,「img src」和「a href」正在改變。

所以唯一的解決方案是使用服務器端,在頁面加載到客戶端之前更改屬性值。

我知道如何在「ul」中循環每個「li」,但不知道如何改變E分別控制與asp.net屬性

感謝和任何的努力可以理解

+0

只是出於好奇,你可以使用中繼器控件來呈現這使用XML文件作爲數據源?是否有理由使用拉迪斯拉夫的例子來預置和操縱HTML? – Rob 2011-06-06 02:08:06

+0

是的,原因是這是一個jQuery插件,所以我不能觸及HTML代碼 – baaroz 2011-06-06 13:36:25

+0

因此,jQuery插件正在讀取XML並生成HTML?或者HTML必須與上面顯示的一樣,所以jQuery插件可以引用它?拉迪斯拉夫的答案是否適用於此? – Rob 2011-06-07 18:40:34

回答

0

您已經打上runat="server"所有控件因此它應該是一件容易的事。喜歡的東西:

HtmlGenericControl ul = this.FindControl("ul1") as HtmlGenericControl; 
foreach(HtmlGenericControl li in ul.Controls) 
{ 
    HtmlAnchor a = li.Controls[0] as HtmlAnchor; // add some null validation, etc. 
    a.HRef = ...; 

    HtmlImage img = a.Controls[0] as HtmlImage; // add some null validation, etc. 
    img.Src = ...; 
} 

如果你需要一些li你知道自己的ID,這樣就可以再次使用做一些明確的:

// I'm not sure if you will call it on <ul> or page directly - it depends on naming container 
HtmlGenericControl li = ul.FindControl("li3") as HtmlGenericControl; 

您也可以設置從HtmlControl派生的任何控制的任何屬性調用:

control.Attributes["AttributeName"] = value; 
+0

嗨拉迪斯拉夫,謝謝你的回答,我試過你的例子,它沒有工作,我得到錯誤:索引是陣列外(關於控制[0]) – baaroz 2011-06-06 13:17:03

+0

嗨,好吧,我設法做到這一點,控制索引是1而不是0(a.Controls [1]) – baaroz 2011-06-06 13:30:03