18

ASP.NET ページに異なる ID を持つ <li> 要素がいくつかあります。

<li id="li1" class="class1">
<li id="li2" class="class1">
<li id="li3" class="class1">

次のように JavaScript を使用してクラスを変更できます。

li1.className="class2"

しかし、ASP.NET を使用して <li> 要素クラスを変更する方法はありますか? それは次のようなものかもしれません:

WebControl control = (WebControl)FindControl("li1");
control.CssClass="class2";

しかし、FindControl() は期待どおりに機能しません。助言がありますか?

前もって感謝します!

4

8 に答える 8

30

runat="server"HTMLページに追加 します

次に、次のようにasp.Netページの属性プロパティを使用します

li1.Attributes["Class"] = "class1";
li2.Attributes["Class"] = "class2";
于 2008-12-29T14:30:47.747 に答える
12

<li> に runat="server" を含めると、FindControl が機能します。

<li id="li1" runat="server">stuff</li>

そうしないと、サーバー側のコードはそれを「見る」ことができません。

于 2008-09-23T12:49:39.620 に答える
5

これにより、li 要素が検出され、それに CSS クラスが設定されます。

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");

runat="server"他の人が述べたように、属性を忘れずに追加してください。

于 2010-01-20T05:58:30.460 に答える
5

FindControl メソッドは、サーバー コントロールを検索します。つまり、次のように、「runat」属性が「server」に設定されたコントロールを探します。

<li runat="server ... ></li>

<li> タグはサーバー コントロールではないため、FindControl はそれらを見つけることができません。これらのコントロールに「runat」属性を追加するか、ClientScript.RegisterStartupScript を使用して、クラスを操作するクライアント側スクリプトを含めることができます。

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language=\"javascript\">");
sb.Append("document.getElementById(\"li1\").className=\"newClass\";")
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "MyScript", sb.ToString());
于 2008-09-23T13:13:09.423 に答える
4

次のように runat="server" を設定する必要があります。

<li id="li1" runat="server">stuff</li>
于 2008-09-23T12:48:48.000 に答える
3

スタイルを適用したい場合は、これを試してください:

li1.Style.Add("background-color", "black");

CSS の場合、以下の構文を試すことができます。

li1.Attributes.Add("class", "clsItem");
于 2012-08-09T08:49:34.027 に答える
1

Leaf Dev はこれに対する解決策を提供しましたが、「ctl」の代わりに「Master」を挿入する必要があります。

とにかく私のために働いています:

using System.Web.UI.HtmlControls;

HtmlGenericControl liItem = (HtmlGenericControl) ctl.FindControl("liItemID");
liItem.Attributes.Add("class", "someCssClass");
于 2012-07-06T07:37:10.027 に答える
0

いくつかのスタイルを追加したい場合は、これも試すことができます。

li1.Style.add("color","Blue");
li2.Style.add("text-decoration","line-through");
于 2012-06-06T09:47:32.553 に答える