日期:2014-05-18  浏览次数:20412 次

GridView实现删除时弹出确认对话框
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  //如果是绑定数据行 
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
  if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
  {
  ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
  }
  } 

  }

我运行时能够弹出对话框,但奇怪的是无论选择确认还是取消,结果都是被删除了!

请问上面的代码有问题吗?应该怎么改呢?


------解决方案--------------------
最简单的:
<Columns>
<asp:CommandField ShowDeleteButton="True" DeleteText="<div onclick='javascript:return confirm('确定删除吗?');'>删除</div>" />
</Columns>
------解决方案--------------------
楼主用的是ASP 2.0的吧,我有一个ASP1.1的代码,你可以参考一下。
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
switch(e.Item.ItemType)
{
case ListItemType.Item:
case ListItemType.EditItem:
case ListItemType.AlternatingItem: 
LinkButton myDeleteButton=(LinkButton)e.Item.FindControl("LinkButtonDelete");
myDeleteButton.Attributes.Add("OnClick","return confirm('要删除的记录ID是"+DataGrid1.DataKeys[e.Item.ItemIndex].ToString()+",请您确认?')");
break;
}
}
------解决方案--------------------
代码没有问题
lz处理删除用的是RowCommand事件吧
可以试下使用LinkButton的Click事件,比如在模板列的Button中加事件OnClick
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" CommandName="btn" />
后台代码
protected void Button1_Click(object sender, EventArgs e)
{
//delete...
}
------解决方案--------------------
((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm( '你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗? ')"); 

建议你在浏览器里看看生成的html,引号有没有嵌套错误。javascript本身是没看出有什么错误。如果生成的html里是<xxx onclick="javascript:return confirm( '你确认要删除:"tmd"吗? ')"> 这就可能有错了。

如果直接return不行,试试用if(!confirm(''))return false;
------解决方案--------------------
DataGrid中添加删除确认对话框多种实现
http://www.dezai.cn/Article_Show.asp?ArticleID=7930


在DataGrid的使用中,经常需要为删除按纽添加确认对话框,根据我的学习经验,总结了三种方法,原理都是在客户端为删除按纽添加脚本代码来实现删除前弹出确认对话框。 
方法一: 
当为DataGrid控件添加删除按纽后,为DataGrid控件添加ItemDataBound事件处理程序,代码如下: 
//添加删除确认对话框。 
switch(e.Item.ItemType) 

case ListItemType.Item: 
case ListItemType.EditItem: 
case ListItemType.AlternatingItem: 
((LinkButton)e.Item.Cells[4].Controls[0]).Attributes.Add("onclick","return confirm('你真的要删除第"+(e.Item.ItemIndex+1).ToString()+"行吗?');"); 
break; 

其中,e.Item.Cells[4]说明你添加的删除按纽在DataGrid控件中位于第五列,列号从0开始。 
方法二:使用模板列 
1.为DataGrid添加一个模板列,名为“自定义删除”,在这个模板列中添加一个按纽,将按纽的CommandName属性设为UserDelete; 
2.为DataGrid添加ItemCreated事件,添加客户端脚本程序,代码如下: 
switch(e.Item.ItemType) 

case ListItemType.Item: 
case ListItemType.EditItem: 
case ListItemType.AlternatingItem: 
Button myDelButton = (Button)e.Item.FindControl("btnDelete");