如何仅为C#代码隐藏中的选定链接添加类?
我有一个名为“is active”的类,它有一个彩色箭头,根据用户单击的链接从导航中指向主要内容。代码运行一个如何仅为C#代码隐藏中的选定链接添加类?,c#,html,css,C#,Html,Css,我有一个名为“is active”的类,它有一个彩色箭头,根据用户单击的链接从导航中指向主要内容。代码运行一个foreach,并从数据库中提取所有类别。如何使“is active”类仅为当前链接显示?我知道它可以工作,因为我把它放在openList控件中,并且它显示在所有五个类别上,我只是不知道如何让它只显示在所选类别上 我尝试附加jQuery来完成此操作,但是添加linkbutton都是在后面的代码中完成的,因此我不确定如何附加这两个。这是唯一的方法还是另一种方法 提前感谢您的帮助 下面是我的
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
?这到底是怎么回事?亚伦,如果你不介意的话,我会很感激你提到的完整的例子。我非常感谢你的帮助。这似乎是一个简单的任务,但有这么多正在进行。非常感谢。亚伦,多亏了你的领导,我才得以解决,非常感谢!