我将有一个列表视图,其中包含从数据库中绑定的链接。我想跟踪点击该链接的时间。这将是我可以告诉最多点击哪些链接。我尝试使用链接按钮执行此操作,但遇到了访问时颜色不会更改的问题。我怀疑我能用超链接做到这一点,因为超链接没有到达服务器。有关如何执行此操作的任何建议。
这就是我做链接按钮的方式
<asp:ListView ID="lstvTopTen" runat="server">
<ItemTemplate>
<tr>
<td width="100%">
<asp:LinkButton ID="lbtnUrlLink" runat="server" Text='<%# Bind("NewsTitle") %>'
CommandArgument='<%# Bind("NewsUrl") %>' onclick="lbtnUrlLink_Click"
OnDataBinding="lbtnUrlLink_DataBinding" CssClass="newslink" />
<asp:Label ID="Label1" runat="server" Text='<%# Bind("NewsDescriptionDisplay") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
这是我的css
.newslink
{
display:block;
margin: 15px 0 0 0;
text-decoration: none;
font-size:1.2em;
line-height: 1.8em;
border-bottom:1px solid #CCC;
}
.newslink:visited
{
color: Red;
}
答案 0 :(得分:1)
问题在于,当您创建LinkButton时,呈现的代码将具有 javascript函数调用,而不是指向另一个页面的URL。因此浏览器不会将这些存储到其历史记录中。此外,:visited 伪类在这种情况下不起作用,因为它仅适用于网址而不适用于javascript函数调用!
要解决此问题,您可能需要创建一个新的javascript函数,以便在用户点击链接时进行捕获,然后更改样式。
例如:
<script>
function ChangeLinkColour()
{
document.getElementById('myLink').style.color = "Black";
return false;
}
</script>
您的LinkButton将如下所示:
<asp:LinkButton ID="myLink" runat="server" Text="Click me" OnClientClick="return ChangeLinkColour();" CssClass="a"></asp:LinkButton>
答案 1 :(得分:0)
所以这就是我最终做到的。
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Bind("NewsUrl") %>' Target="_blank"
onclick="countClick(this.href);" CssClass="newslink" Text='<%# Bind("NewsTitle") %>' />
<script type="text/javascript" language="javascript">
function countClick(name) {
PageMethods.CountClick(name);
}
</script>
答案 2 :(得分:-1)