在c#中动态改变css样式?

Xai*_*oft 2 c# asp.net

我有一些链接按钮,我在其中动态添加样式.我在一个方法中做了以下事情:

LinkButton lb = new LinkButton();
lb.Style["font-weight"] = "bold";
Run Code Online (Sandbox Code Playgroud)

当单击另一个链接时,它应该展开当前单击的粗体和粗体的链接按钮,所以在执行此操作的方法中,我尝试过:

lb.Style["font-weight"] = "none";
Run Code Online (Sandbox Code Playgroud)

以上不起作用,先前选择的链接保持粗体.

我刚刚意识到可能存在的问题.我正在创建多个链接,它看起来像是因为所有链接都被命名为lb,所以它永远不会删除粗体.我试图想办法让它记住以前选择的链接并且只展开那个链接.

Arm*_*est 8

我可以建议一种替代方法吗?

设置CSS样式:

.selected { font-style: bold; }
Run Code Online (Sandbox Code Playgroud)

单击链接时,将链接的CSS类设置为"选中",将其他链接设置为"";

编辑:适应现有的Css类

const string MY_CLASS = "links";
lb1.CssClass = MY_CLASS + " selected"; // selected
lb.CssClass = MY_CLASS; // not selected
Run Code Online (Sandbox Code Playgroud)

在定义内联样式时,您很快就会遇到麻烦,因为它们很难覆盖.

编辑2:

像这样的代码应该工作.您可能需要遍历列表中的所有LinkBut​​tons,但我不这么认为.我只是关闭LinkBut​​tons上的ViewState.

// 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"; 
    }
}
Run Code Online (Sandbox Code Playgroud)