2017-03-14 6 views
1

liタグのidを指定して、コードの背後にあるliタグにcssクラスを追加したいとします。ここでC#の文字列でHtmlGenericControlを取得する方法

<li id="liOne" runat="server" class=""></li> 

は、私のC#のコードです:

System.Web.UI.HtmlControls.HtmlGenericControl ctrl = Page.FindControl("liOne") as System.Web.UI.HtmlControls.HtmlGenericControl; 
if(ctrl!=null) 
    ctrl.Attributes["class"] += " active"; 

私は上記の方法を試してみましたが、それはnullを返します。 liタグを取得するためにすべてのページコントロールを反復する必要のないメソッドはありますか?ありがとう。

答えて

1

コントロールliあなたはulの子になるので、ページの最上位にはいません。 FindControlはトップレベルにあります。 liOneの直上の親にFindControlと電話する必要があります。

あなたはすでにidとliを持っていて、すでにrunat="server"のプロパティセットですので、FindControlと直接アクセスできるはずです。

liOne.Attributes["class"] += " active"; 

Page.FindControl

FindControlメソッドは、そのID設計時に使用可能 ないコントロールにアクセスするために使用することができます。このメソッドは、ページの の直接の、または最上位のコンテナのみを検索します。ページに含まれているコンテナの名前付けに、 コントロールを再帰的に検索しません。従属命名コンテナの コントロールにアクセスするには、そのコンテナのFindControl メソッドを呼び出します。コメントに基づいて

編集は、多くのLiはあなたがLI1、LI2、LI3のようないくつかの配列を有するIDを割り当て、その親を介してそれらを評価することができ

制御があります。

for(int i=1; i < 4; i++) 
{ 
    System.Web.UI.HtmlControls.HtmlGenericControl ctrl = ul1.FindControl("li" + i) as System.Web.UI.HtmlControls.HtmlGenericControl; 
    //Do what you want with ctrl 
} 
+0

ulタグにいくつかのliコントロールがあるので、直接アクセスするのではなく、より動的にしたいと思います。 –

+0

あなたの答えをありがとう、特定のliコントロールがコードの背後にあることができるようにul runatサーバーを作成しました。 –

+0

あなたは大歓迎です! – Adil

関連する問題