GridView删除前提示的又一添加方法

 在我写的 《DataGrid与GridView中删除前提示框与编辑框长度设置的实现(ASP.NET)》一文中,提到过GridView删除前提示的方法,主要有JS脚本法、Text属性法、事件代码法(DataGrid)、模板列法(GridView)等。

  但JS脚本法,适用性不强,只要控件的ID更改了,就得要更改JS脚本,实在麻烦。Text属性法呢,当你用的是GridView的CommandField时,此法就不适用了,而我最近正好就使用了这个。事件代码呢,文中只提到过DataGrid的ItemCreated事件,还有很多其他可行的事件在DataGrid中存在而在GridView中没有的。模板列法呢,虽然这个方法在GridView中很有效,但我想,有没什么办法可以用在CommandField上而可以不用模板列的呢?

  经过研究,确实找到了一个方法。其原理很简单:在GridView中有一个RowCreated事件,它是GridView在每行数据创建后执行的,它GridViewRowEventArgs类的变量e,不是含有当前行的引用吗?而在RowCreated执行的时候,当前行是已经创建了的,也就是说该行所有的控件都存在了,那么自然就可以在这时候利用Attributes.Add方法来添加onclick属性了(类似DataGrid的事件代码法)。

  那么,以后就又多了一个在GridView上添加删除前提示的方法了!

  代码如下(在GridView的RowCreated事件中添加):

Visual Basic.Net:

   Dim lnkDel As LinkButton
   If e.Row.RowIndex >= 0 Then
       lnkDel = e.Row.Cells(0).Controls(0)
       lnkDel.Attributes.Add("onclick", "return confirm('确定要删除该记录吗?')")
   End If


Visual C#:

   LinkButton lnkDel;
   if (e.Row.RowIndex >=0)
   {
       lnkDel = e.Row.Cells[0].Controls[0];
       lnk.Attributes.Add("onclick", "return confirm('确定要删除该记录吗?')");
   }


  在这里说明一下,因为CommandField所有的控件,最终都是要转换为LinkButton的,所以我要用LinkButton类的变量来接收这个控件。如果用的不是CommandField,可以把LinkButton类换成其他相应的类。至于为什么一定要“e.Row.RowIndex >=0”呢?是因为HeaderText其实也算一行的,总不会要在HeaderText上也加上删除前提示吧;而且HeaderText中所有的控件最终都是要转换为Label的,用LinkButton类的变量来接收,肯定会抛出类型不匹配的SystemException。

  其他就没什么好说明的了,相信大家不会连其他的那么点代码都看不懂吧。
< Tags: , , >
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值