如何在点击确认消息时删除行?

时间:2011-08-10 13:13:58

标签: c# javascript jquery asp.net

我有一个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事件并删除项目。

如果用户点击加载没有停止页面。因此,用户可以单击行上的某个位置并查看项目的详细信息

3 个答案:

答案 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?');
}