在测试您上面的示例时,我发现每次单击LinkButton 时都会提交包含GridView 的表单。为了解决这个问题,我使用了以下代码。
以下脚本将在用户每次点击链接时计数。
<script type="text/javascript">
var clickNo = 0;
function clickCounter() {
clickNo++;
if (clickNo == 2) {
alert("Double Click");
clickNo = 0;
}
}
</script>
我们取消表单提交,以便我们可以跟踪用户点击链接的次数。这可能会导致您的页面出现问题,但似乎是无法跟踪双击的原因。
<form id="form1" runat="server" onsubmit="return false;">
我在GridView 控件中创建了一个模板字段来显示单击和双击按钮。
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:LinkButton ID="lnkBtnEdit" runat="server">LinkButton</asp:LinkButton>
<asp:LinkButton ID="lnkBtnEditDouble" runat="server">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
在页面后面的代码中,我们添加了用于单击的javascript 代码和用于双击的javascript 代码。请注意:由于我在测试中使用的列有限,单元格引用设置为 2,而在您的示例中为 4。
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Please note: the value in Cells has changed for my testing data.
LinkButton btn = (LinkButton)e.Row.Cells[2].FindControl("lnkBtnEdit");
btn.Attributes.Add("onclick", "javascript:alert('Single Click');");
LinkButton btnDouble = (LinkButton)e.Row.Cells[2].FindControl("lnkBtnEditDouble");
btnDouble.Attributes.Add("onclick", "javascript:clickCounter();");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
这应该允许您捕获对某些链接的双击和对其他链接的单击。但是,如上所述,现在表单提交已被取消,如果您要使用上述代码,您将需要寻找另一种方法来提交您的数据。