2012-02-14 35 views
0

我試圖在運行時創建一組選項卡,一段時間後,它們正常工作 - 但現在它們似乎只顯示以前呈現的選項卡下的所有選項卡的內容。看起來很愚蠢,就我所知,就代碼而言,由於代碼運行起來沒有任何變化,所以我對發生了什麼事情有點困惑......WebForms中的選項卡

對於本例的目的我不會使用循環,雖然這看起來沒有問題,因爲循環似乎不是問題。

<asp:Panel runat="server" ID="pnlTabs"> 
    <ul runat="server" id="ulSections" /> 
</asp:Panel> 

我得出的結論是,我的代碼必須在故障所以這裏是C#:

HtmlGenericControl liTab = new HtmlGenericControl("li");       
HtmlGenericControl anTab = new HtmlGenericControl("a"); 
anTab.Attributes.Add("href", "#Tab1"); 
anTab.InnerText = Tab1; 
liTab.Controls.Add(anTab); 
ulSections.Controls.Add(liTab); 

var pnl = new Panel(); 
pnl.ID = Tab1; 
pnlTabs.Controls.Add(pnl); 

我將不會對「PNL」我控制什麼。任何人都可以告訴我我的錯誤是什麼?

+0

這很可能是一個CSS問題 - 有改變嗎? – Jason 2012-02-14 17:37:40

+0

我檢查了源代碼,並據我所知可以告訴CSS沒有改變。這似乎是合乎邏輯的,因爲上面的代碼工作,現在不是,但我不知道可能發生了什麼變化,以及如何修正它。 – Mattplus 2012-02-15 10:46:15

回答

0

我發現問題所在,基本上是「anTab」的InnerText不能與「anTab」的href屬性相同,因爲這會導致混淆並導致所有選項卡中的內容僅出現在第一個(選定)選項卡,而其餘選項卡不起作用。

例如,下面的代碼在「anTab」的InnerText爲「Tab 1」時正常工作,並且href正在查找ID爲「Tab1」的控件,該ID是面板的ID。

HtmlGenericControl liTab = new HtmlGenericControl("li");       
HtmlGenericControl anTab = new HtmlGenericControl("a"); 
anTab.Attributes.Add("href", "#Tab1"); 
anTab.InnerText = "Tab 1"; 
liTab.Controls.Add(anTab); 
ulSections.Controls.Add(liTab); 

var pnl = new Panel(); 
pnl.ID = "Tab1"; 
pnlTabs.Controls.Add(pnl); 

下面我們可以看到,「anTab」將InnerText是一樣的href和我們希望的選項卡,使用面板的ID,這將導致混亂,因爲HREF現在假設你想要的「標籤點擊」指向自己而不是實際面板。

HtmlGenericControl liTab = new HtmlGenericControl("li");       
HtmlGenericControl anTab = new HtmlGenericControl("a"); 
anTab.Attributes.Add("href", "#Tab1"); 
anTab.InnerText = "Tab1"; 
liTab.Controls.Add(anTab); 
ulSections.Controls.Add(liTab); 

var pnl = new Panel(); 
pnl.ID = "Tab1"; 
pnlTabs.Controls.Add(pnl); 
0
//THIS ADDS THE <A> to the <LI> 
liTab.Controls.Add(anTab); 

//THIS ADDS THE <LI> to the <UL> 
ulSections.Controls.Add(liTab); 

//THIS CODE Appear to have nothing to do with anything. 
var pnl = new Panel(); 
pnl.ID = Tab1; 
pnlTabs.Controls.Add(pnl); 

如果您查看源代碼,甚至可以確認HTML是否在html中呈現。

在你的代碼背後是這個代碼...在按鈕點擊,在頁面加載,在初始化?

+0

謝謝你的迴應。當然,HTML正在呈現(並且據我所知,看起來是正確的),並且後面的代碼位於Page_Load中。 「pnl」是我放置標籤內容的地方,即文本框等。 – Mattplus 2012-02-15 10:18:48

+0

我也注意到「#」已經開始出現在URL中,當我點擊一個未選中的選項卡時,這種情況並沒有發生。 – Mattplus 2012-02-15 10:47:34