<p>原文来自: <a href="http://www.cnblogs.com/jimmylin/articles/111353.html">http://www.cnblogs.com/jimmylin/articles/111353.html</a>。</p>
涂鸦作了一点优化和改进。
思路:
为删除按钮添加客户端onclick事件
步骤:
1.在DetailsView的DataBound事件中,先判断DetailsView当前状态(分三种,Edit,Insert,ReadOnly)
2.当DetailsView状态为ReadOnly时,根据删除按钮的类型所在的Rows定位控件,例如删除按钮是link类型,处在最后一行,则代码如下:
protected void DetailsView_StockIn_DataBound(object sender, EventArgs e) { if (this.DetailsView_StockIn.CurrentMode == DetailsViewMode.ReadOnly) { // 给删除按钮加一个确认框 LinkButton btn = (LinkButton)this.DetailsView_StockIn.Rows[this.DetailsView_StockIn.Rows.Count - 1].Cells[0].Controls[2]; btn.Attributes.Add("onclick", "javascript:return confirm('删除操作不可恢复,您确定要删除吗?')"); } }
特别提示:Controls[2]的index,如果CommandField中按钮排列顺序是 Edit Delete New,则Controls的index为2,因为在Edit和Delete两个Button间还有一个Literal控件,笔者最初将index设为1(原以为Edit的index是0,则Delete的index为1),结果出错,后来用GetType()跟踪控件类型,发现index=1的控件类型为literal.
3.为定位到的Delete按钮添加客户端事件(文中红色背景部分)。
遗留问题:
1.为什么多了一个Literal控件
2.还有什么方法可以为Delete Button添加确认对话框