gpt4 book ai didi

c# - 单击时更改链接按钮的颜色?

转载 作者:行者123 更新时间:2023-11-30 17:25:44 24 4
gpt4 key购买 nike

我有一个名为 courses 的用户控件,它显示所有可用的类(class)。在我的用户控制文件中,我使用转发器控件来显示类(class)。所有类(class)名称都呈现为项目模板内的链接按钮。我在名为 foo.aspx 的页面中使用此用户控件。单击时,我正在使用 javascript 函数更改 itemtemplate 内值的颜色。单击时颜色会改变一秒钟,但会恢复到原来的颜色。有谁知道我在这里做错了什么?

我的 javascript 函数。

<script>
function changeColor(e) {
e.style.color = "red";
}
</script>

<asp:LinkButton ID="LinkButton1" OnClientClick="return changeColor(this);" runat="server">LinkButton</asp:LinkButton>

最佳答案

正如我在您的评论中所说,请注意页面 PostBack

为了防止您的 LinkBut​​ton 颜色重置,我认为您应该将它们保存在 ViewState

我不知道这是否是最好的解决方案,但至少我已经尽力提供帮助了:)

这是aspx:

<asp:Repeater ID="myRepeater" OnItemCommand="myRepeater_ItemCommand" runat="server">
<ItemTemplate>
<asp:LinkButton ID="myLinkButton" runat="server" CommandName="CHANGE_COLOR" ForeColor="<%# System.Drawing.Color.FromName(Container.DataItem.ToString()) %>">Your Text</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>

这是背后的代码(C#):

首先创建ViewState(这是防止PostBack后数据丢失的关键)

List<string> listData
{
set { ViewState["listData"] = value; }
get
{
if (ViewState["listData"] == null)
return new List<string>();
else
return (List<string>)ViewState["listData"];
}
}

在页面加载:

    protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
listData = new List<string>();
listData.Add("Blue");
listData.Add("Blue");
listData.Add("Blue");
}

myRepeater.DataSource = listData;
myRepeater.DataBind();
}

当您单击 LinkBut​​ton 时,转发器将触发 OnItemCommand

protected void myRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (e.CommandName == "CHANGE_COLOR")
{
LinkButton linkButton = (LinkButton)e.Item.FindControl("myLinkButton");
if (linkButton.ForeColor != System.Drawing.Color.Red)
{
linkButton.ForeColor = System.Drawing.Color.FromName("Red");
listData[e.Item.ItemIndex] = "Red"; //This is the key! This will prevent your color reset, as we save them inside ViewState
}
else
{
linkButton.ForeColor = System.Drawing.Color.FromName("Blue");
listData[e.Item.ItemIndex] = "Blue";
}
}
}
}

关于c# - 单击时更改链接按钮的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24319314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com