Динамически меняющийся стиль CSS в C #?

2

У меня есть некоторые кнопки ссылок, в которых я динамически добавляю к нему стиль. Я делаю следующее в методе:

LinkButton lb = new LinkButton();
lb.Style["font-weight"] = "bold";

При щелчке по другой ссылке он должен отменить кнопку ссылки, выделенную жирным шрифтом, и полужирным шрифтом в текущий момент, поэтому в методе, который делает это, я попытался:

lb.Style["font-weight"] = "none";

Вышеупомянутое не работает, хотя ранее выбранная ссылка остается жирным.

Я только понял возможную проблему. Я создаю несколько ссылок, и похоже, что, поскольку все ссылки называются lb, он никогда не удаляет жирный шрифт. Я пытаюсь придумать способ запоминания ранее выбранной ссылки и только отменить ее.

Теги:

5 ответов

8
Лучший ответ

Можно ли предложить альтернативный подход?

Задайте стиль 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"; 
    }
}
  • 0
    На самом деле, я делаю это, но у меня уже есть CssClass, который используется для этого.
  • 0
    Что вы имеете в виду? Можете ли вы объяснить это дальше?
Показать ещё 6 комментариев
2

Попробуйте lb.Style.Remove( "font-weight" ). Я не тестировал его, но вы можете попробовать его.

В качестве альтернативы вы попробовали настройки свойства Font.Bold?

lb.Font.Bold = true;
  • 0
    Спасибо за указание на это, я действительно забыл, что я мог бы выделить это жирным шрифтом таким образом.
1

Попробуйте 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 ";
  • 0
    Жирный шрифт работает, когда я хочу очистить шрифт, он не работает.
0

установите шрифт жирным шрифтом в событии клика кнопки ссылки и установите для свойства состояния представления разрешения значение false в самом событии клика, которое будет reset ссылка на обычную пену другим кликом

0

вы можете попробовать lb.Style.Remove( "font-weight" );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню