Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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#_Javascript_Asp.net - Fatal编程技术网

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

C# 单击时更改链接按钮的颜色?,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个名为courses的用户控件,它显示所有可用的课程。在我的用户控件文件中,我使用repeater控件来显示课程。所有课程名称都呈现为itemtemplate中的链接按钮。我在名为foo.aspx的页面中使用此用户控件。我使用javascript函数来更改单击itemtemplate时itemtemplate中值的颜色。当我单击时,颜色会发生一秒钟的变化,但会恢复为原始颜色。有人知道我做错了什么吗 我的javascript函数 <script> function changeC

我有一个名为courses的用户控件,它显示所有可用的课程。在我的用户控件文件中,我使用repeater控件来显示课程。所有课程名称都呈现为itemtemplate中的链接按钮。我在名为foo.aspx的页面中使用此用户控件。我使用javascript函数来更改单击itemtemplate时itemtemplate中值的颜色。当我单击时,颜色会发生一秒钟的变化,但会恢复为原始颜色。有人知道我做错了什么吗

我的javascript函数

<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>