我有一个asp gridview。在行数据绑定中,我添加onclick事件以查看项目详细信息。我也删除了按钮。问题是当我点击项目删除时,它会删除项目,但也会重定向到项目预览页面。它不应该进行回发和重定向
这是我的代码
protected void Grid_DataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Attributes["onClick"] = String.Format("location.href='" + "/Url/page.aspx?id=" + "{0}", DataBinder.Eval(e.Row.DataItem, "Id") + "'");
}
删除按钮
public void GvDeleteHabit(object source, CommandEventArgs e)
{
int id= Convert.ToInt32(e.CommandName);
Delete(id);
}
<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return confirm('Do you want to delete?')"
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton>
在客户端我已确认消息。所以我想要实现的是当用户点击删除按钮时,我需要从行中删除onclick事件并删除项目。
如果用户点击加载没有停止页面。因此,用户可以单击行上的某个位置并查看项目的详细信息
答案 0 :(得分:0)
尝试从javascript:
删除OnClientClick
。只有在href
属性中使用javascript时才需要它。
答案 1 :(得分:0)
您遇到的问题是,即使您单击“删除”仍然在该行上注册为点击事件,这又会触发重定向。您应该将重定向放入函数中,并传递click事件的源代码。如果源是您的按钮,请退出该功能。
onRowClick = function(source){
if (source.element.type == "button") // this may not be correct, but you get the point
return confirm('Are you sure you want to delete this item');
//do your redirect here
}
e.Row.Attributes["onclick"] = "onRowClick(this);";
AND在您的HTML标记中:
<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return onRowClick(this);"
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton>
答案 2 :(得分:0)
由于你也有行onclick处理程序,你必须基本上停止事件传播的删除按钮点击,试试这将解决问题。
ASPX更改
<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return confrimDelete(e);"
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton>
在您的任何js文件或页面上添加此方法
function confirmDelete(){
var event = e || window.event;
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
return confirm('Do you want to delete?');
}