2012-02-14 21 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

+0

私はソースコードをチェックしていて、CSSには変わっていないと言うことができます。上記のコードが動作していて、今は変わっていないが、何が変わっているのか、どうすればそれを修正するのかは分かりません。 – Mattplus

答えて

0

"anTab"のInnerTextは "anTab"のhref属性と同じにすることはできません。混乱の原因となり、すべてのタブのコンテンツが最初の(選択された)タブ、残りのタブは機能しません。

たとえば、 "anTab"のInnerTextが "Tab 1"であり、hrefがパネルのIDである "Tab1"という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

+0

未選択のタブをクリックしたときに "#"がURLに表示され始めたことに気がつきました。 – Mattplus

関連する問題