How to remove underline and disable a Linkbutton in ASP.Net after clicking and maintain this status across postbacks?
I'm using a Multiview control having 6 views. I'm also using 6 LinkButtons named as 1 2 3 4 5 6. Each of the LinkButton when clicked causes a postback and sets the corresponding ActiveIndexView property of the Multiview control.
I would like to remove the underline and disable the Linkbutton which is clicked at any point and keep the remaining five active. Also, each of the views have controls like dropdown which also cause postback. So, its important for me to persist the disabled state of the most recent clicked Linkbutton and keep the remaining five active. I'm using ASP.Net 2.0 with C# as the code-behind.
ViewState["LastClickedID"] = "Link1"; //Store the ID in the viewstate.
RefreshLinks(); //Update the links
then you would need to add the method:
void RefreshLinks() {
switch (ViewState["LastClickedID"].ToString()) {
case "Link1":
Link1.Attributes.Add("class", "LinkNoUnderline");
Link1.Enabled = false;
break;
case "Link2":
Link2.Attributes.Add("class", "LinkNoUnderline");
Link2.Enabled = false;
break;
case "Link3":
Link3.Attributes.Add("class", "LinkNoUnderline");
Link3.Enabled = false;
break;
case "Link4":
Link4.Attributes.Add("class", "LinkNoUnderline");
Link4.Enabled = false;
break;
case "Link5":
Link5.Attributes.Add("class", "LinkNoUnderline");
Link5.Enabled = false;
break;
case "Link6":
Link6.Attributes.Add("class", "LinkNoUnderline");
Link6.Enabled = false;
break;
}
}
That should do what you need.
Ghost
0
pb102674Author Commented:
Thanks for the response.
As I had mentioned in my question, each of the views have controls like dropdown which also cause postback. So, its important for me to persist the disabled state of the most recent clicked Linkbutton and keep the remaining five active.
I used the code above. What happens is when a dropdown in a view causes a postback, the clicked LinkButton again shows up as active.
As an example, View3 has a dropdown. When I click Linkbutton 3, it initially shows with no underline and disabled. But when an item in the dropdown in View3 is selected, it causes a postback and Linkbutton 3 shows up as active and clickable. In reality, Linkbutton should show with no underline and disabled.
I have EnableViewState property of all LinkButtons set to false. Do I have to do something in Page_OnLoad event?
yes sorry I forget to include that part
in your page load you must call:
RefreshLinks();
That will ensure you are keeping the data. Also don't disable the viewstate. that's important so asp.net can track your link button's state (enabled, disabled)
0
There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.
Doesn't work. Let's say if I click on LinkButton 2 and then click on LinkButton 3, both 2 and 3 show up as Disabled. If I click on Linkbutton 4, Linkbuttons 2, 3, and 4 show up as disabled.
However, the postback issue of dropdown I mentioned in my previous comment is now taken care of. I have the EnableViewState set to true for all LinkButtons.
Here's my code:
protected void Page_Load(object sender, System.EventArgs e)
{
//This is because for the first time, View 1 is shown by default
if (!IsPostBack)
{
ViewState["LastClickedID"] = lbGoToPage1.ID;
}
RefreshLinks();
}
//LinkButton code, likewise I have the same code for the remaining five buttons.
protected void lbGoToPage1_Click(object sender, System.EventArgs e)
{
//Store the ID in the viewstate.
ViewState["LastClickedID"] = lbGoToPage1.ID;
//Update the links
RefreshLinks();
MultiView1.ActiveViewIndex = 0;
}
private void RefreshLinks()
{
switch (ViewState["LastClickedID"].ToString())
{
case "lbGoToPage1":
lbGoToPage1.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage1.Enabled = false;
break;
case "lbGoToPage2":
lbGoToPage2.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage2.Enabled = false;
break;
case "lbGoToPage3":
lbGoToPage3.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage3.Enabled = false;
break;
case "lbGoToPage4":
lbGoToPage4.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage4.Enabled = false;
break;
case "lbGoToPage5":
lbGoToPage5.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage5.Enabled = false;
break;
case "lbGoToPage6":
lbGoToPage6.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage6.Enabled = false;
break;
}
}
private void RefreshLinks()
{
EnableAll();
switch (ViewState["LastClickedID"].ToString())
{
case "lbGoToPage1":
lbGoToPage1.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage1.Enabled = false;
break;
case "lbGoToPage2":
lbGoToPage2.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage2.Enabled = false;
break;
case "lbGoToPage3":
lbGoToPage3.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage3.Enabled = false;
break;
case "lbGoToPage4":
lbGoToPage4.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage4.Enabled = false;
break;
case "lbGoToPage5":
lbGoToPage5.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage5.Enabled = false;
break;
case "lbGoToPage6":
lbGoToPage6.Attributes.Add("class", "LinkNoUnderline");
lbGoToPage6.Enabled = false;
break;
}
}
Try that now.
0
pb102674Author Commented:
Thank you. I appreciate your time and efforts. I will be posting a few more questions specific to other scenarios in my application. So, I would really appreciate if you could respond to those questions.
you will need to add this to the top of your page. under the <title>
<style type="text/css" media="screen">
.LinkNoUnderline
{
text-decoration:none;
}
</style>
maybe viewstate :
example I click on Link1:
ViewState["LastClickedID"]
RefreshLinks(); //Update the links
then you would need to add the method:
void RefreshLinks() {
switch (ViewState["LastClickedID"
case "Link1":
Link1.Attributes.Add("clas
Link1.Enabled = false;
break;
case "Link2":
Link2.Attributes.Add("clas
Link2.Enabled = false;
break;
case "Link3":
Link3.Attributes.Add("clas
Link3.Enabled = false;
break;
case "Link4":
Link4.Attributes.Add("clas
Link4.Enabled = false;
break;
case "Link5":
Link5.Attributes.Add("clas
Link5.Enabled = false;
break;
case "Link6":
Link6.Attributes.Add("clas
Link6.Enabled = false;
break;
}
}
That should do what you need.
Ghost