CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

能否在DataGrid中利用模板列中的删除按钮写确认删除弹出窗口?

楼主chenxy80(陈陈)2005-05-11 16:27:24 在 .NET技术 / ASP.NET 提问

在DataGrid中利用模板列中的删除按钮写确认删除弹出窗口  
            DataGrid中的删除模板列中的代码如下:  
  <asp:ButtonColumn   Text="&lt;img   src=img/delete.gif   border=0   alt=Delete   /&gt;"   HeaderText="删除"   CommandName="Delete"></asp:ButtonColumn>  
   
  我在后台程序中添加了   DataGrid1_ItemCreated代码:  
          if(e.Item.FindControl("Delete")   !=   null  
                LinkButton   lbtn   =   (LinkButton)(e.Item.Cells[7].FindControl("Delete"));  
                lbtn.Attributes.Add("onclick",   "javascript:return   window.confirm('真的删除?');");  
   
  但是这个判断的条件总满足不了,所以JAVA代码不能添加上。原因是ButtonColumn   是没有ID的。  
  我也查询了CSDN中以前类似问题,是否不能用ButtonColumn模板列中的delete,只能另外写TemplateColumn,在其中添加ItemTemplate,在其中添加button来实现? 问题点数:20、回复次数:17Top

1 楼aquariusdeng(无泪有伤之新手上路)回复于 2005-05-11 16:47:03 得分 0

不知道是不是巧合,虽然没听说过不可以,但是没看到过这样用的  
  我看到的,以及曾经使用的,都是用的模板列,在其中添加Button  
  不过,模板列用起来并不比按钮列麻烦多少啊Top

2 楼blackhero(黑侠客)回复于 2005-05-11 16:56:29 得分 5

HyperLinkColumn   linkcolumn2=new   HyperLinkColumn();  
  linkcolumn2.DataNavigateUrlField="actid";  
  linkcolumn2.HeaderText="删除";  
  linkcolumn2.Text="删除";  
  linkcolumn2.DataNavigateUrlFormatString="del.aspx?actid={0}";  
  linkcolumn2.HeaderStyle.Wrap=false;  
  linkcolumn2.ItemStyle.Wrap=false;  
  linkcolumn2.Visible=true;  
  linkcolumn2.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;  
  linkcolumn2.ItemStyle.HorizontalAlign=HorizontalAlign.Center;  
  this.DataGrid1.Columns.Add(linkcolumn2);  
   
   
  del.aspx  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //取值  
  this.Session["actid"]=this.Request.Params["actid"].ToString();  
  //先判断是否真的删除  
  this.Response.Write("<script   language='javascript'>");  
  this.Response.Write("aa=window.confirm('您确定要删除帐号"+this.Request.Params["actid"].ToString()+"?');");  
  this.Response.Write("if(aa==false){");  
  this.Response.Write("window.location.href='usrlist.aspx'");  
  this.Response.Write("}");  
  this.Response.Write("if(aa==true)");  
  this.Response.Write("{");  
  this.Response.Write("window.location.href='del_usr.aspx'");  
  this.Response.Write("   }   ");    
  this.Response.Write("</script>");  
  //在此处放置用户代码以初始化页面  
  }  
  del_usr.aspx  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  if(this.Session["logid"]==null)  
  {  
  this.Response.Write("<script   language='javascript'>top.location.href='../../index.aspx';</script>");  
  this.Response.End();  
  }  
  //连接数据库  
  string   connstr=System.Configuration.ConfigurationSettings.AppSettings["sqllink"];  
  SqlConnection   conn=new   SqlConnection(connstr);  
  conn.Open();  
  try  
  {  
  string   sql="";       //执行sql语句  
  sql="delete   from   usract   where   actid='"+this.Session["actid"].ToString()+"'";  
  SqlCommand     cmd=new   SqlCommand(sql,conn);  
   
  SqlCommand   cmd1=   new   SqlCommand("PRO_PlanAlmEvt_INTOPlanAlmEvtGET",conn);                     //添加用户(PRO_PlanAlmEvt_INTOPlanAlmEvtGET为存储过程的名字)  
  SqlCommand   cmd2=new   SqlCommand("PRO_CONTLIST_INTOCONTLISTGET",conn);       //执行存储过程PRO_CONTLIST_INTOCONTLISTGET  
  SqlCommand   cmd3=new   SqlCommand("PRO_CPZONE_INTOCPZONEGET",conn);                                       //执行存储过程(PRO_CPZONE_INTOCPZONEGET  
  SqlCommand   cmd4=new   SqlCommand("PRO_USRACT_INTOUSRACTGET",conn);  
   
  cmd1.CommandType=CommandType.StoredProcedure;                                       //是存储过程  
  cmd2.CommandType=CommandType.StoredProcedure;  
  cmd3.CommandType=CommandType.StoredProcedure;  
  cmd4.CommandType=CommandType.StoredProcedure;  
   
  cmd1.Parameters.Add("@ACTID",this.Session["actid"].ToString());                       //为命令行添加参数  
  cmd2.Parameters.Add("@ACTID",this.Session["actid"].ToString());  
  cmd3.Parameters.Add("@ACTID",this.Session["actid"].ToString());  
  cmd4.Parameters.Add("@ACTID",this.Session["actid"].ToString());  
   
  cmd.ExecuteNonQuery(); //执行sql语句  
  cmd1.ExecuteNonQuery(); //执行存储                                  
  cmd2.ExecuteNonQuery();  
  cmd3.ExecuteNonQuery();  
  cmd4.ExecuteNonQuery();  
   
  this.Response.Write("<script>alert('删除成功')</script>"); //显示  
  this.Response.Write("<script>window.location.href='usrlist.aspx'</script>"); //跳页  
  }  
  catch(Exception   E)  
  {  
  this.Response.Write(E.ToString());  
  }  
  finally  
  {  
  conn.Close();  
  }  
  //   在此处放置用户代码以初始化页面  
  }  
   
  Top

3 楼niuniu23_1982(潜行者)回复于 2005-05-11 17:02:11 得分 5

if((e.Item.ItemType==ListItemType.AlternatingItem)||(e.Item.ItemType==ListItemType.Item))  
  {  
  LinkButton   lbtn   =   (LinkButton)(e.Item.Cells[7].FindControl("Delete"));  
                lbtn.Attributes.Add("onclick",   "javascript:return   window.confirm('真的删除?');");  
  }  
  就可以了Top

4 楼vzxq(灵感人)回复于 2005-05-11 17:20:41 得分 5

<asp:ButtonColumn   Text="&lt;div   onclick=&quot;return   confirm('确定要删除吗?')&quot;&gt;删除&lt;/div&gt;"   HeaderText="删   除"  
  CommandName="Delete"></asp:ButtonColumn>Top

5 楼chenxy80(陈陈)回复于 2005-05-11 17:23:47 得分 0

TO:   blackhero(黑侠客),呵呵,不用帖这么多代码吧,我说得和DataGrid有关,你的代码好像没有什么关系啊。  
  TO:   niuniu23_1982(牛牛)   ,if条件是满足了,但e.Item.Cells[7].FindControl("Delete")这个结果是NULL,所以LinkButton   lbtn   =   (LinkButton)(e.Item.Cells[7].FindControl("Delete"));出错。Top

6 楼gaochao79(www.informe.cn)回复于 2005-05-11 17:28:32 得分 0

当然能,我就这个问题google过,结果又把我引导到csdn来了,csdn里有这个文章的Top

7 楼hchxxzx(NET?摸到一点门槛)回复于 2005-05-11 17:31:09 得分 0

否认是模板列,还是按钮列,都可以添加删除脚本,楼上的那么多兄弟.....  
  马上下班了,晚上帮你写一下Top

8 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-05-11 17:32:05 得分 0

((LinkButton)di.Cells[7].Controls[0]).Attributes.Add("onclick","return   confirm('delete?');");    
  buttoncolumn没有id只能通过索引取Top

9 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-05-11 17:32:29 得分 0

((LinkButton)e.Item.Cells[7].Controls[0]).Attributes.Add("onclick","return   confirm('delete?');");   buttoncolumn没有id只能通过索引取  
  Top

10 楼chenxy80(陈陈)回复于 2005-05-11 17:34:16 得分 0

to:vzxq(灵感人)    
        谢谢,实现了,而且短小精悍,强,但是text中的那段是什么语言啊,  
  我是福州的程序员,  
  QQ:21566939,MSN:chenxyok@hotmail.comTop

11 楼yipiaoqingshui(一瓢清水)回复于 2005-05-11 17:43:01 得分 5

.cs里面这样写  
  #region   项创建事件  
  ///   <summary>  
  ///   项创建事件  
  ///   </summary>  
  ///   <param   name="sender">事件对象</param>  
  ///   <param   name="e">事件参数</param>  
  private   void   dgrdFileTemplateType_ItemCreated(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
  //鼠标事件  
  if(e.Item.ItemType   ==   ListItemType.AlternatingItem   ||   e.Item.ItemType   ==   ListItemType.Item)  
  {  
  e.Item.Attributes.Add("onmouseover","RowMouseOver(this);");  
  e.Item.Attributes.Add("onmouseout","RowMouseOut(this);");  
  e.Item.Attributes.Add("onclick","RowMouseClick(this);");  
  }  
   
  //创建删除按钮客户端事件  
  if(e.Item.FindControl("lbtnRemove_Power_3282")   !=   null)  
  {  
  ((LinkButton)e.Item.FindControl("lbtnRemove_Power_3282")).Attributes.Add("onclick","return   RemoveFileTemplateType();");  
  }  
  }  
  #endregion  
   
  记得绑定事件  
   
   
  页面加段JS代码  
   
  //删除参数类型  
  function   RemoveFileTemplateType()  
  {  
   
  //停止冒泡  
  event.cancelBubble   =   true;  
   
   
   
  //执行删除  
  if(window.confirm("确认要删除吗?"))  
  {  
  return   true;  
  }  
  else  
  {  
        return   false;  
  }  
  ps:偶也是福州的..嘻嘻.这个比较简单.我们公司都这样用...起码后台代码量少点.  
  性能很重要.Top

12 楼hchxxzx(NET?摸到一点门槛)回复于 2005-05-11 17:52:51 得分 0

//先绑定控件  
  this.myGrid.DataSource   =   this.myTab;  
  this.myGrid.DataKeyField   =   "usr_id";  
  this.myGrid.DataBind();  
   
   
  //绑定之后循环此控件,为每一个按钮添加事件  
  int   i=0;  
  int   mycount   =   this.myGrid.Items.Count;  
   
  for(i=0;i<mycount;i++)  
  {  
  //为模板列(删除)添加事件  
  Button   butdelete   =   (Button)this.myGrid.Items[i].FindControl("butdelete");  
  butdelete.Attributes.Add("onclick","return(confirm('确认要删除记录吗?'));");  
  //为按钮列(删除)添加事件  
  LinkButton   linkdelete   =   (LinkButton)this.myGrid.Items[i].Cells[7].Controls[0];  
  linkdelete.Attributes.Add("onclick","return(confirm('确认要删除记录吗?'));");  
  }  
  Top

13 楼wd_terry(IQ+EQ=QQ)回复于 2005-05-11 17:59:12 得分 0

我的BLOG里面也有,能够解决的Top

14 楼silentwins(原谅我当天不懂得珍惜只知任性...)回复于 2005-05-11 18:49:29 得分 0

这个要mark一下Top

15 楼silentwins(原谅我当天不懂得珍惜只知任性...)回复于 2005-05-11 19:11:58 得分 0

用了   vzxq(灵感人)   的代码后,OnItemCommand那个过程怎么写?Top

16 楼chenxy80(陈陈)回复于 2005-05-12 09:11:37 得分 0

用了   vzxq(灵感人)   的代码后,后台程序可以不用写了,只需写DataGrid1_DeleteCommand的内容就行了,结帖。Top

17 楼cx12cn(攻台保钓收南沙!!)回复于 2005-05-12 13:17:32 得分 0

markTop

相关问题

  • DataGrid模板列中的按钮
  • datagrid模板列的button按钮的连接问题???
  • datagrid中模板使用按钮确认的问题
  • DATAGRID模板列中按钮响应自身ONCLICK
  • datagrid控件如何实现模板按钮的筛选?
  • DataGrid的模板列中按钮的问题
  • 如何使DATAGRID中的按钮列弹出对话框?急
  • 请教如何动态添加链接或按钮到DataGrid的模板中
  • 请问怎么操作datagrid模板中的按钮?小妹在线等
  • DataGrid 中有两个模板列,怎样识别它们的按钮.

关键词

  • 模板
  • 代码
  • 存储过程
  • 执行
  • 页面
  • linkcolumn2
  • 删除
  • actid
  • 模板列
  • 按钮

得分解答快速导航

  • 帖主:chenxy80
  • blackhero
  • niuniu23_1982
  • vzxq
  • yipiaoqingshui

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo