2015-04-23 54 views
1

我在創建代碼隱藏元素的動態<li>時遇到問題。我需要將runat服務器分配給li,但是我沒有找到分配runat服務器的方法,所以當我需要從後面的代碼更改屬性時,找不到那個li控件。我的問題有任何答案嗎?我是新來的asp.net c#。li與runat服務器

這裏是我的代碼:

<ul class="nav nav-tabs" runat="server" id="tabList"> 
    //First i got ul control that i assign runat=server in aspx page 
</ul> 

//then i create li from code behind in Page_Init() 
System.Web.UI.HtmlControls.HtmlGenericControl tab = new System.Web.UI.HtmlControls.HtmlGenericControl("li"); 
tab.ID = "tab" + (i + 1); 
tab.Attributes.Add("runat", "server");//this is not working 
tab.Controls.Add(new LiteralControl("<a href=\"#customer" + (i + 1) + "\" data-toggle=\"tab\">Penumpang " + (i + 1) + "</a>")); 

//then i add the li to my ul controler called tablist 
this.tabList.Controls.Add(tab); 

我的問題是,當頁面加載時,我可以看到頁面上的力,但我不能從後面的代碼給李打電話,當我需要做一些事情它。有沒有辦法在後面的代碼中調用li?或者在動態分配時更改li屬性?對不起,英文不好。

在此先感謝。

+0

「屬性」集合用於HTML屬性。 'runat =「server」'不是HTML屬性。 –

+3

而不是使用html li,如果那可以使用像控制列表視圖或中繼器來生成?http://stackoverflow.com/questions/10578824/how-to-generate-unordered-list-dynamically-in-asp-net – Se0ng11

+0

實際上我只需要控制html li或者訪問它,因爲我動態地創建li以創建需要多少標籤,然後如果選擇了dropdownlist事件,那麼選擇的是li控件的選項卡將被激活(屬性將被更改),我不知道如何使用列表視圖或中繼器來做li工作@ Se0ng11 – Ian

回答

0

在代碼隱藏中無法訪問<li>的原因是因爲它是動態生成的。

動態生成的控件在視圖上呈現時會失去其狀態,並且在回發時您在代碼隱藏中再次訪問它們時,需要在播放它們之前重新創建它們。所以基本上,您需要在回發中每次重新創建它們以訪問它們的屬性和值,並使用它們進行操作。

此外,runat='server'不會從代碼隱藏工作。除了使用<li>之外,您還可以嘗試使用一些ASP.NET控件,如Listview或其他數據綁定控件。

希望這會有所幫助。

+0

只有li控制我沒有得到,我動態創建文本框,我可以訪問它,正如我在上面評論中所說的,我只需要訪問li來更改屬性,感謝@HarveySpecter的建議 – Ian

相關問題