Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅为C#代码隐藏中的选定链接添加类?_C#_Html_Css - Fatal编程技术网

如何仅为C#代码隐藏中的选定链接添加类?

如何仅为C#代码隐藏中的选定链接添加类?,c#,html,css,C#,Html,Css,我有一个名为“is active”的类,它有一个彩色箭头,根据用户单击的链接从导航中指向主要内容。代码运行一个foreach,并从数据库中提取所有类别。如何使“is active”类仅为当前链接显示?我知道它可以工作,因为我把它放在openList控件中,并且它显示在所有五个类别上,我只是不知道如何让它只显示在所选类别上 我尝试附加jQuery来完成此操作,但是添加linkbutton都是在后面的代码中完成的,因此我不确定如何附加这两个。这是唯一的方法还是另一种方法 提前感谢您的帮助 下面是我的

我有一个名为“is active”的类,它有一个彩色箭头,根据用户单击的链接从导航中指向主要内容。代码运行一个
foreach
,并从数据库中提取所有类别。如何使“is active”类仅为当前链接显示?我知道它可以工作,因为我把它放在
openList
控件中,并且它显示在所有五个类别上,我只是不知道如何让它只显示在所选类别上

我尝试附加jQuery来完成此操作,但是添加
linkbutton
都是在后面的代码中完成的,因此我不确定如何附加这两个。这是唯一的方法还是另一种方法

提前感谢您的帮助

下面是我的类别和链接按钮代码:

protected override void CreateChildControls()
{
    LiteralControl openingDiv = new LiteralControl("<div id='MainPanel'>");
    LiteralControl closingDiv = new LiteralControl("</div>");   

    this.Controls.Add(openingDiv);

    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        LiteralControl openList = new LiteralControl("<li class='" + dr["CategoryColor"].ToString() + "'>");
        LiteralControl closeList = new LiteralControl("</li>");                

        Label lblNumber = new Label();

        LinkButton myLinkButton = new LinkButton();

        myLinkButton.Text = "<span class='number'>" + dr["CategoryNumber"] + "</span>"+ dr["CategoryName"].ToString();
        myLinkButton.CommandArgument = dr["Category_ID"].ToString();
        myLinkButton.Click += myLinkButton_Click;

        this.Controls.Add(openList);
        this.Controls.Add(myLinkButton);
        this.Controls.Add(closeList);
    }
    this.Controls.Add(closingDiv);
}
void myLinkButton_Click(object sender, EventArgs e)
{
    LinkButton btn = (LinkButton)(sender);
    Session["CategoryID"] = btn.CommandArgument;

    Response.Redirect(Request.RawUrl);  
}
protectedoverride void CreateChildControls()受保护的覆盖
{
LiteralControl openingDiv=新的LiteralControl(“”);
LiteralControl closingDiv=新的LiteralControl(“”);
this.Controls.Add(openingDiv);
foreach(ds.Tables[0].行中的数据行dr)
{
LiteralControl openList=新的LiteralControl(“
  • ”); Label lblNumber=新标签(); LinkButton myLinkButton=新建LinkButton(); MyLink Button.Text=”“+dr[“CategoryNumber”]+“”+dr[“CategoryName”].ToString(); myLinkButton.CommandArgument=dr[“Category_ID”].ToString(); myLinkButton.Click+=myLinkButton\u Click; this.Controls.Add(openList); this.Controls.Add(MyLink按钮); this.Controls.Add(关闭列表); } this.Controls.Add(closingDiv); } 无效MyLink按钮\u单击(对象发送者,事件参数e) { 链接按钮btn=(链接按钮)(发送方); 会话[“CategoryID”]=btn.CommandArgument; 重定向(Request.RawUrl); }
  • 这很棘手,因为您的响应。在按钮单击处理程序中重定向,该处理程序将重新创建页面视图状态。 这意味着您的页面将始终显示为新页面,并且用户单击该链接的事实已丢失

    作为一种解决方法,您可以在response.redirect之前将链接id放在会话变量中,然后在页面重新加载时调用它。 然后,在循环中,如果会话变量与您设置的cssclass等于的当前button instance.id匹配,则该会话变量处于活动状态

    请记住,在将cssclass设置为“活动”后也要清除会话变量,以避免在其他页面中出现混淆

    此外,在将按钮添加到控件树后,还必须进行id比较,因为系统会在此处自动为您生成id。如果你愿意,我可以给你举个完整的例子

    请记住,这是一种变通方法,最好采用不同的方法。 我的意思是,如果使用ispostback包装而不是重定向,那么在回发时,可以更轻松地将id设置为isactive

    如果您希望更熟练地使用.net,页面生命周期是一件重要的事情,尤其是当您提到使用ajax更新面板时。
    阅读此文:有很多信息需要了解,因此也可以将其添加到书签中,以备以后使用。

    如何定义“当前链接”?如果我不理解您的问题,我很抱歉,但链接按钮是通过编程生成的。当用户单击其中一个导航链接按钮时,它会更新更新面板以反映该选择的内容。我的问题是,当单击五个链接按钮中的一个时,链接按钮上会出现一个小箭头图像,这样用户就可以看到该链接是活动链接。好的,您可以在更新面板时添加该类,或者在其中处理事件。链接位于母版页上,但是它们会影响
    UpdatePanel
    控件内部的内容。这会改变你提到的任何事情吗?如果是这样,我可以发布额外的代码。谢谢。以上内容仍将在更新面板中使用,并在母版页中提供链接是的。(因为您没有使用正确的ajax部分回发功能-因为response.redirect()。如果您使用的是建议的isPostback包装器,那么您可以在isPostback包装器中调用panel.update(),但因为您只是重定向,所以不需要执行任何其他操作。您正在UpdatePanel中执行
    Response.Redirect
    ?这到底是怎么回事?亚伦,如果你不介意的话,我会很感激你提到的完整的例子。我非常感谢你的帮助。这似乎是一个简单的任务,但有这么多正在进行。非常感谢。亚伦,多亏了你的领导,我才得以解决,非常感谢!