У меня есть некоторые кнопки ссылок, в которых я динамически добавляю к нему стиль. Я делаю следующее в методе:
LinkButton lb = new LinkButton();
lb.Style["font-weight"] = "bold";
При щелчке по другой ссылке он должен отменить кнопку ссылки, выделенную жирным шрифтом, и полужирным шрифтом в текущий момент, поэтому в методе, который делает это, я попытался:
lb.Style["font-weight"] = "none";
Вышеупомянутое не работает, хотя ранее выбранная ссылка остается жирным.
Я только понял возможную проблему. Я создаю несколько ссылок, и похоже, что, поскольку все ссылки называются lb, он никогда не удаляет жирный шрифт. Я пытаюсь придумать способ запоминания ранее выбранной ссылки и только отменить ее.
Можно ли предложить альтернативный подход?
Задайте стиль CSS:
.selected { font-style: bold; }
При щелчке ссылки установите для этой ссылки класс CSS для "selected", а остальные - "";
EDIT: для размещения существующего класса Css
const string MY_CLASS = "links";
lb1.CssClass = MY_CLASS + " selected"; // selected
lb.CssClass = MY_CLASS; // not selected
Вы можете быстро попасть в проблему при определении встроенных стилей, поскольку их сложно перезаписать.
ИЗМЕНИТЬ 2:
Что-то вроде этого кода должно работать. Возможно, вам придется пройти через все LinkButtons в списке, но я так не думаю. Я бы просто отключил ViewState на LinkButtons.
// container for links. so you can reference them
// outside of the creation method if you wish. I'd probably call this method in the
// Page_Init Event.
List<LinkButton> listOfLinks = new List<LinkButton>();
const string MY_LB_CLASS = "linkButton"; // generic lb class
private void createSomeLinks() {
for (int i = 0; i < 10; i++) {
// create 10 links.
LinkButton lb = new LinkButton()
{
ID = "lb" + i,
CssClass = MY_LB_CLASS
};
lb.Click += new EventHandler(lb_Click); // Add the click event
}
// You can bind the List of LinkButtons here, or do something with them.
}
void lb_Click(Object sender, EventArgs e) {
LinkButton lb = sender as LinkButton; // cast the sender as LinkButton
if (lb != null) {
// Make the link you clicked selected.
lb.CssClass = MY_LB_CLASS + " selected";
}
}
Попробуйте lb.Style.Remove( "font-weight" ). Я не тестировал его, но вы можете попробовать его.
В качестве альтернативы вы попробовали настройки свойства Font.Bold?
lb.Font.Bold = true;
Попробуйте ListBox1.Attributes.Add("style","font-weight:bold");
и ListBox1.Attributes.Add("style","font-weight:normal");
или даже лучше
//css
.active {font-weight:bold}
.notactive {font-weight:normal}
//С#
ListBox1.CssClass = "active";
ListBox1.CssClass = "notactive ";
установите шрифт жирным шрифтом в событии клика кнопки ссылки и установите для свойства состояния представления разрешения значение false в самом событии клика, которое будет reset ссылка на обычную пену другим кликом
вы можете попробовать lb.Style.Remove( "font-weight" );