C# 单击时更改链接按钮的颜色?
我有一个名为courses的用户控件,它显示所有可用的课程。在我的用户控件文件中,我使用repeater控件来显示课程。所有课程名称都呈现为itemtemplate中的链接按钮。我在名为foo.aspx的页面中使用此用户控件。我使用javascript函数来更改单击itemtemplate时itemtemplate中值的颜色。当我单击时,颜色会发生一秒钟的变化,但会恢复为原始颜色。有人知道我做错了什么吗 我的javascript函数C# 单击时更改链接按钮的颜色?,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个名为courses的用户控件,它显示所有可用的课程。在我的用户控件文件中,我使用repeater控件来显示课程。所有课程名称都呈现为itemtemplate中的链接按钮。我在名为foo.aspx的页面中使用此用户控件。我使用javascript函数来更改单击itemtemplate时itemtemplate中值的颜色。当我单击时,颜色会发生一秒钟的变化,但会恢复为原始颜色。有人知道我做错了什么吗 我的javascript函数 <script> function changeC
<script>
function changeColor(e) {
e.style.color = "red";
}
</script>
<asp:LinkButton ID="LinkButton1" OnClientClick="return changeColor(this);" runat="server">LinkButton</asp:LinkButton>
函数更改颜色(e){
e、 style.color=“红色”;
}
链接按钮
正如我在您的评论中所说的,请注意页面回发
为了防止你的LinkButton
颜色重置,我认为你应该把它们保存在里面
我不知道这是否是最好的解决方案,但至少我试着帮助:)
以下是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>
在页面加载中:
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();
}
创建两个CSS类,检查中继器链接是否启用或禁用,并根据该条件显示CSS类,如下所示:
.ActiveLinkBtn
{
color:red;
font:bold 12px Tahoma;
}
.InActiveLinkBtn
{
color:blue;
}
然后按照以下步骤更换中继器
<asp:Repeater ID="rptPager" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnkPage" runat="server" Text='<%#Eval("Text") %>'
CommandArgument='<%# Eval("Value") %>'
Enabled='<%# Eval("Enabled") %>' OnClick="Page_Changed" CssClass='<%#
Convert.ToBoolean(Eval("Enabled")) ? "ActiveLinkBtn" :"InActiveLinkBtn"%>'>
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
单击asp:link按钮内的asp:Repeater
时,您的Repeater将触发OnItemCommand
,导致回发到您的页面。当页面执行回发时,HTML将再次呈现。这就是为什么链接按钮的颜色将再次重置。@WillyLazuardi感谢您的回复。有没有办法解决这个问题?有一种比使用javascript更简单的方法,请参见下面我的答案
.ActiveLinkBtn
{
color:red;
font:bold 12px Tahoma;
}
.InActiveLinkBtn
{
color:blue;
}
<asp:Repeater ID="rptPager" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnkPage" runat="server" Text='<%#Eval("Text") %>'
CommandArgument='<%# Eval("Value") %>'
Enabled='<%# Eval("Enabled") %>' OnClick="Page_Changed" CssClass='<%#
Convert.ToBoolean(Eval("Enabled")) ? "ActiveLinkBtn" :"InActiveLinkBtn"%>'>
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>