Asp.net 更改特定链接按钮的颜色
我正在使用一系列的链接按钮a-z,它们是动态创建的,我想在点击每个按钮时,它们的文本颜色会改变为其他颜色,以使其与我正在做的其他按钮不同Asp.net 更改特定链接按钮的颜色,asp.net,linkbutton,Asp.net,Linkbutton,我正在使用一系列的链接按钮a-z,它们是动态创建的,我想在点击每个按钮时,它们的文本颜色会改变为其他颜色,以使其与我正在做的其他按钮不同 protected void Page_Init(object sender, EventArgs e) { // Adding Dynamically linkbuttons for all alphabets(i.e. A-Z) for (char asciiValue = 'A'; asciiValue <=
protected void Page_Init(object sender, EventArgs e)
{
// Adding Dynamically linkbuttons for all alphabets(i.e. A-Z)
for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++)
{
LinkButton lbtnCharacter = new LinkButton();
lbtnCharacter.ID = "lbtnCharacter" + asciiValue;
divAlphabets.Controls.Add(lbtnCharacter);
lbtnCharacter.Text = Convert.ToString(asciiValue);
lbtnCharacter.CssClass = "firstCharacter";
lbtnCharacter.ToolTip = "Show users whose name starts with '" + Convert.ToString(asciiValue) + "'";
lbtnCharacter.CommandArgument = Convert.ToString(asciiValue);
lbtnCharacter.Command += new CommandEventHandler(lbtnCharacter_Command);
}
}
void lbtnCharacter_Command(object sender, CommandEventArgs e)
{
ViewState["Selected_Character"] = e.CommandArgument;
LinkButton lbtn = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument);
lbtn.ForeColor = System.Drawing.Color.Orange;
txtNameFilter.Text = string.Empty;
BindUserList();
}
受保护的无效页\u Init(对象发送方,事件参数e)
{
//为所有字母(即A-Z)添加动态链接按钮
对于(char ascivalue='A';ascivalue您的问题是,链接按钮的ViewState在呈现控件(包括更新的样式)之前被保存。然后,在回发时,在Page_Init之后,ViewState将以橙色样式重新应用于每个控件。这将覆盖您在Page_Init中添加的设置。因此,在p加载时,需要重置每个控件上的样式
向样式表中添加其他样式
.highlighted { color:orange; }
在lbtnu命令中,替换
lbtn.ForeColor = System.Drawing.Color.Orange;
与
在页面加载中,添加:
foreach (var ctrl in divAlphabets.Controls)
{
if (ctrl is LinkButton)
((LinkButton)ctrl).CssClass = "firstCharacter";
}
在每次页面加载时,所有linkbuttons css类都将重置为默认值。这是在ViewState应用于它们之后(在PageInit和PageLoad之间)。然后在命令事件中,单击的按钮将附加新样式。此样式中的颜色设置将覆盖第一个字符样式中的任何颜色设置
更新
protected void Page_Init(object sender, EventArgs e) {
for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++) {
var lbtnCharacter = new LinkButton {
ID = "lbtnCharacter" + asciiValue,
Text = Convert.ToString(asciiValue),
ToolTip = "Show users whose name starts with '" + Convert.ToString(asciiValue) + "'",
CommandArgument = Convert.ToString(asciiValue)
};
lbtnCharacter.Command += lbtnCharacter_Command;
divAlphabets.Controls.Add(lbtnCharacter);
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (Session["CurrentLetter"] != null) {
foreach (var ctrl in divAlphabets.Controls) {
if (ctrl is LinkButton) {
if (((LinkButton) ctrl).Text == Session["CurrentLetter"].ToString()) {
((LinkButton) ctrl).CssClass = "firstCharacter highlighted";
}
}
}
}
}
void lbtnCharacter_Command(object sender, CommandEventArgs e) {
//Reset all of the other buttons only when clicking a new one
foreach (var ctrl in divAlphabets.Controls) {
if (ctrl is LinkButton) {
((LinkButton) ctrl).CssClass = "firstCharacter";
}
}
//Set the clicked button and save the Session state
var lbtn = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument);
lbtn.CssClass = "firstCharacter highlighted";
Session["CurrentLetter"] = lbtn.Text;
}
受保护的无效页\u Init(对象发送方,事件参数e){
for(char ascivalue='A';ascivalue Daniel抱歉,我遇到了一个新问题,因为此筛选器正在筛选用户名并在列表视图中显示它(假设我按“S”)有很多同名用户通过点击datapager页码进入下一页突出显示的颜色丢失了,你能帮助我吗?在这种情况下,你可能需要将当前选定的字母存储在会话中。请参阅我的更新答案。将其放入新的测试页中,看看它是如何工作的。
protected void Page_Init(object sender, EventArgs e) {
for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++) {
var lbtnCharacter = new LinkButton {
ID = "lbtnCharacter" + asciiValue,
Text = Convert.ToString(asciiValue),
ToolTip = "Show users whose name starts with '" + Convert.ToString(asciiValue) + "'",
CommandArgument = Convert.ToString(asciiValue)
};
lbtnCharacter.Command += lbtnCharacter_Command;
divAlphabets.Controls.Add(lbtnCharacter);
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (Session["CurrentLetter"] != null) {
foreach (var ctrl in divAlphabets.Controls) {
if (ctrl is LinkButton) {
if (((LinkButton) ctrl).Text == Session["CurrentLetter"].ToString()) {
((LinkButton) ctrl).CssClass = "firstCharacter highlighted";
}
}
}
}
}
void lbtnCharacter_Command(object sender, CommandEventArgs e) {
//Reset all of the other buttons only when clicking a new one
foreach (var ctrl in divAlphabets.Controls) {
if (ctrl is LinkButton) {
((LinkButton) ctrl).CssClass = "firstCharacter";
}
}
//Set the clicked button and save the Session state
var lbtn = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument);
lbtn.CssClass = "firstCharacter highlighted";
Session["CurrentLetter"] = lbtn.Text;
}