views:

370

answers:

2

Hai guys,

I want to find a UL control and then find a LI within that UL and assign a css class to that from a content page....

<ul id="mainMenu" runat="server" style="width:350px;">
            <li id="mainHome" runat="server"><a title="Home" href="#" class="home">Home</a></li>
            <li id="mainManage" runat="server"><a title="Manage" href="#" class="manage">Manage</a></li>
            <li id="mainEnquiry" runat="server"><a title="Enquiry" href="#" class="enquiry">Enquiry</a></li>
            <li id="mainReport" runat="server"><a title="Report" href="#" class="report">Reports</a></li>

            </ul>

If the user clicks home it is redirected to users.aspx page and i want to highlight Home LI with a color... Plz give me suggestion...

+1  A: 

If I have understood this correctly...

If your list is on the master page...

<ul runat="server" id="list">
    <li runat="server" id="home">Home</li>
    <li runat="server" id="news">News</li>
</ul>

...then you can do this on your content page...

Control list = this.Page.Master.FindControl("list");

Then the li objects will be controls in the list object - e.g. list.Controls. Or you can do...

Control home = this.Page.Master.FindControl("list").FindControl("home");

...to find specific controls of the list control.

When using the runat="server" on the HTML controls the server side equivalent object will be HtmlGenericControl.

If you want to apply a class to the LI tags what you would have to do is cast the LI object to a HtmlGenericControl and then use the Attributes property. For example...

HtmlGenericControl home = (HtmlGenericControl)this.Page.Master.FindControl("list").FindControl("home");

home.Attributes["class"] = "className";

Hope that helps...

Chalkey
Hai Chalkey this is what i was asking... Thanks man i ll give a try..
Pandiya Chendur
I found the UL id but i cant find LI id which is home
Pandiya Chendur
To find the LI you will have to do this.Page.Master.FindControl("list").FindControl("home");
Chalkey
@Pandiya - I have updated my example also...
Chalkey
chalkey that did the trick but i cant apply css to that LI ... How can apply css
Pandiya Chendur
@Pandiya - I have updated my example again! You will be able to add a CSS class in the code behind by following my example.
Chalkey
Chalkey guys like you make this forum so special.... Thanks man....
Pandiya Chendur
No problem, glad to help :)
Chalkey
A: 

Give this a spin and let me know if it works.

In CSS, create two classes called something like:

.normalLink
{
background-color:#fff;
}

.selectedLink
{
background-color:#555;
}

In your links:

<li id="mainHome" runat="server"><a title="Home" href="users.aspx" class="<%= SetSelectedLink("users.aspx") %>">Home</a>
<li id="mainManage" runat="server"><a title="Manage" href="#" class="<%= SetSelectedLink("manage.aspx") %>">Manage</a></li>

In your code behind page:

If you are using a master page, do this next bit in the master code behind, otherwise you can paste it into every regular aspx code behindthat needs it

public string SetSelectedLink(string linkURL)
{
 if(Request.Url.ToLower().Contains(linkURL.ToLower())))
 {
    return "selectedLink";
 }
 else
 {
   return "normalLink";
 }
}

Edit: This only works if you replace your href # with proper urls!

adrianos
ok man i ll give a try
Pandiya Chendur
Hai adrianos i want to use css for that <li id="mainHome" runat="server">
Pandiya Chendur
you want to call SetSelectedLink on your <li> element instead of your <a> element? then move it into the <li> element
adrianos
Thanks adrianos for ur valuable sugestions....
Pandiya Chendur
no problem, glad you found an answer.
adrianos