2008-09-23 7 views
16

मेरे पास कई < li> विभिन्न आईडी ASP.NET पृष्ठ पर के साथ तत्वों:ASP.NET का उपयोग कर एक HTML पृष्ठ तत्व के सीएसएस वर्ग को कैसे बदलें?

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

और इस तरह जावास्क्रिप्ट का उपयोग अपनी कक्षा बदल सकते हैं:

li1.className="class2" 

लेकिन वहाँ < बदलने के लिए एक रास्ता है li> एएसपी.NET का उपयोग कर तत्व वर्ग? यह कुछ ऐसा हो सकता है:

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

लेकिन FindControl() मेरी अपेक्षा के अनुसार काम नहीं करता है। कोई सुझाव?

अग्रिम धन्यवाद!

उत्तर

4

FindControl विधि सर्वर नियंत्रणों के लिए खोज करता है। यही कारण है, यह विशेषता के साथ नियंत्रण के लिए लग रहा है "runat" "सर्वर" करने के लिए सेट, के रूप में:

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

क्योंकि आपके < ली > टैग सर्वर नियंत्रण नहीं हैं, FindControl उन्हें नहीं मिल रहा। आप इन नियंत्रणों में "रनैट" विशेषता जोड़ सकते हैं या क्लाइंटस्क्रिप्ट का उपयोग कर सकते हैं। रजिस्ट्रार स्टार्टअपस्क्रिप्ट क्लास में हेरफेर करने के लिए कुछ क्लाइंट साइड स्क्रिप्ट शामिल करने के लिए, उदा।

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()); 
4

आप runat = की तरह "सर्वर" सेट करना होगा:

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

अगर आप < ली में runat = "सर्वर" शामिल FindControl काम करेंगे >

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

नहीं तो आप सर्वर साइड कोड कर सकते हैं इसे 'टी' देखें।

+3

डॉन यह मत भूलना कि जब आप LI तत्व में runat = "server" जोड़ते हैं, तो आपको सर्वर contr का उपयोग कर तत्व खोजने के लिए जावास्क्रिप्ट को संशोधित करने की आवश्यकता होगी ओएल क्लाइंट आईडी संपत्ति –

29

अपने HTML पृष्ठ में runat="server" जोड़े

तो यह

li1.Attributes["Class"] = "class1"; 
li2.Attributes["Class"] = "class2"; 
5

की तरह अपने asp.Net पेज में विशेषता संपत्ति का उपयोग इस li तत्व मिल जाएगा और पर एक CSS वर्ग सेट यह।

using System.Web.UI.HtmlControls; 

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

याद के रूप में दूसरों के द्वारा उल्लेख अपने runat="server" विशेषता जोड़ने के लिए।

0

तुम भी भी इस कोशिश कर सकते हैं यू कुछ कुछ शैलियों जोड़ना चाहते हैं:

li1.Style.add("color","Blue"); 
li2.Style.add("text-decoration","line-through"); 
1

पत्ता देव इस के लिए समाधान प्रदान करते हैं लेकिन "सीटीएल" के स्थान पर आप "मास्टर" डालने के लिए की जरूरत है।

यह मेरे लिए वैसे भी काम कर रहा है:

using System.Web.UI.HtmlControls; 

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

इस प्रयास करें यदि आप शैली लागू करना चाहते हैं:, आप वाक्य रचना नीचे की कोशिश कर सकते

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

सीएसएस के लिए:

li1.Attributes.Add("class", "clsItem");