为GridView“删除”列添加确认对话框
2010-10-20 09:30
316 查看
如何为gridview控件里的“删除”列添加一个确认对话框?网上众说纷纭,大致见到了三种解决方案,现归纳如下:
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码之复杂,只有作者自己想体会吧……
2、在gridview的ItemCreated事件中,遍历所有控件,若属于LinkButton类,且CommandName为“Delete”,就
将其添加一个属性,具体做法是将遍历到的Control强制类型转化为LinkButton,然后调用其Atributes.Add方法,添加一个
onclick事件内含confirm语句,即
lb.Attributes.Add(
"
onclick
"
,
"
return confirm('您真的要删除此行吗?')
"
);
3、目前已知的最简洁的方法
,如图,在删除按钮的那一列属性里面,把DeleteText属性设为
<
div id
=
"
de
"
onclick
=
"
JavaScript:return confirm('确定删除吗?')
"
>
删除
</
div
>
可问题是,.net输出的html代码如下:
<
a
href
="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView1','Delete$0')"
style
="color:#4A3C8C;"
><
div
id
="de"
onclick
="JavaScript:return confirm('确定删除吗?')"
>
删除
</
div
></
a
>
为什么内层<div>的onclick事件所返回的bool值能影响到外层<a>标签的的语句是否被执行呢?
仔细想了想,以前用asp直接写的删除标签是这个样子的:
<
a
href
="deleteUser.asp?id=xxx"
onclick
="return confirm('确定删除吗?')"
>
删除
</
a
>
也就是说,onclick事件接受一个bool值,其决定了click事件是否被触发。若click
事件没有被触发,href内含的跳转动作就不会生效。同理,之前的那段代码中,<div>在<a>中,只有先触
发<div>的click事件,<a>的跳转动作才会生效。而我们在<div>的onclick事件中若选择为其赋
值false,随即取消了<div>的click事件,也同时取消了<a>的跳转。
之后,新的问题又来了。如果我们的CommandField中ButtonType是Button的话,这段代码就失效了。我想了下,可以通过将其转换为模板列的方式来解决。
先将该字段转换成模板,然后编辑这个模板列,选中用于删除的Button,将其onClientClick属性设为
return
confirm('您确认删除要删除么?')
即可。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
方法一
ButtonLinkField.Text
=
"
<div id=/
"
del/
"
onclick=/
"
JavaScript:
return
confirm(
'
确定删除吗?
'
)/
"
>删除</div>
"
就OK了!
方法二:
1
protected
void
GridView1_RowDataBound(
object
sender, GridViewRowEventArgs e)
2
{
3
//
如果是绑定数据行
4
if
(e.Row.RowType
==
DataControlRowType.DataRow)
5
{
6
if
(e.Row.RowState
==
DataControlRowState.Normal
||
e.Row.RowState
==
DataControlRowState.Alternate)
7
{
8
((LinkButton)e.Row.Cells[
6
].Controls[
0
]).Attributes.Add(
"
onclick
"
,
"
javascript:return confirm('你确认要删除:/
""
+ e.Row.Cells[1].Text +
"
/
"
吗?')
"
);
9
}
10
}
11
12
}
方法三:
在GridView中我们可以直接添加一个CommandField删除列来删除某行信息。但为了避免误操作引起的误删除,在删除操作者让操作者再确认下,完后再进行删除。
首先我们给我们的GridView 添加一个模板列,如下:
其次我们给我们所添加的模板列添加:OnClientClick="return confirm('确认要删除此行信息吗?')" ,如下:
点击删除时就会先在客户端弹出“确认要删除吗?”对话框,一般我们确认删除。
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码之复杂,只有作者自己想体会吧……
2、在gridview的ItemCreated事件中,遍历所有控件,若属于LinkButton类,且CommandName为“Delete”,就
将其添加一个属性,具体做法是将遍历到的Control强制类型转化为LinkButton,然后调用其Atributes.Add方法,添加一个
onclick事件内含confirm语句,即
lb.Attributes.Add(
"
onclick
"
,
"
return confirm('您真的要删除此行吗?')
"
);
3、目前已知的最简洁的方法
,如图,在删除按钮的那一列属性里面,把DeleteText属性设为
<
div id
=
"
de
"
onclick
=
"
JavaScript:return confirm('确定删除吗?')
"
>
删除
</
div
>
可问题是,.net输出的html代码如下:
<
a
href
="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView1','Delete$0')"
style
="color:#4A3C8C;"
><
div
id
="de"
onclick
="JavaScript:return confirm('确定删除吗?')"
>
删除
</
div
></
a
>
为什么内层<div>的onclick事件所返回的bool值能影响到外层<a>标签的的语句是否被执行呢?
仔细想了想,以前用asp直接写的删除标签是这个样子的:
<
a
href
="deleteUser.asp?id=xxx"
onclick
="return confirm('确定删除吗?')"
>
删除
</
a
>
也就是说,onclick事件接受一个bool值,其决定了click事件是否被触发。若click
事件没有被触发,href内含的跳转动作就不会生效。同理,之前的那段代码中,<div>在<a>中,只有先触
发<div>的click事件,<a>的跳转动作才会生效。而我们在<div>的onclick事件中若选择为其赋
值false,随即取消了<div>的click事件,也同时取消了<a>的跳转。
之后,新的问题又来了。如果我们的CommandField中ButtonType是Button的话,这段代码就失效了。我想了下,可以通过将其转换为模板列的方式来解决。
先将该字段转换成模板,然后编辑这个模板列,选中用于删除的Button,将其onClientClick属性设为
return
confirm('您确认删除要删除么?')
即可。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
方法一
ButtonLinkField.Text
=
"
<div id=/
"
del/
"
onclick=/
"
JavaScript:
return
confirm(
'
确定删除吗?
'
)/
"
>删除</div>
"
就OK了!
方法二:
1
protected
void
GridView1_RowDataBound(
object
sender, GridViewRowEventArgs e)
2
{
3
//
如果是绑定数据行
4
if
(e.Row.RowType
==
DataControlRowType.DataRow)
5
{
6
if
(e.Row.RowState
==
DataControlRowState.Normal
||
e.Row.RowState
==
DataControlRowState.Alternate)
7
{
8
((LinkButton)e.Row.Cells[
6
].Controls[
0
]).Attributes.Add(
"
onclick
"
,
"
javascript:return confirm('你确认要删除:/
""
+ e.Row.Cells[1].Text +
"
/
"
吗?')
"
);
9
}
10
}
11
12
}
方法三:
在GridView中我们可以直接添加一个CommandField删除列来删除某行信息。但为了避免误操作引起的误删除,在删除操作者让操作者再确认下,完后再进行删除。
首先我们给我们的GridView 添加一个模板列,如下:
<asp:TemplateField HeaderText="Delete" ShowHeader="False"> <ItemStyle ForeColor="Red" /> <ItemTemplate> <asp:LinkButton ID="BtnDelete" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> |
<asp:TemplateField HeaderText="Delete" ShowHeader="False"> <ItemStyle ForeColor="Red" /> <ItemTemplate> <asp:LinkButton ID="BtnDelete" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" OnClientClick="return confirm('确认要删除此行信息吗?')"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> |
相关文章推荐
- gridview删除添加确认对话框以及模板列操作
- 为gridview“删除”列添加确认对话框
- gridview添加删除确认对话框
- 为gridview“删除”列添加确认对话框
- 如何为gridview控件里的“删除”列添加一个确认对话框?
- 为gridview“删除”列添加确认对话框
- [转] 为GridView删除添加确认对话框
- gridview“删除”列添加确认对话框
- Gridview自动增长列和为删除列添加确认对话框
- 为gridview“删除”列添加确认对话框
- 【.net】在GridView控件中添加确认删除对话框
- 为gridview “删除”列添加确认对话框
- 为GRIDVIEW“删除”列添加确认对话框
- 为gridview“删除”列添加确认对话框
- 为gridview“删除”列添加确认对话框
- 为gridview“删除”列添加确认对话框
- 为gridview“删除”列添加确认对话框
- 为gridview“删除”列添加确认对话框
- (转载)gridview添加删除确认对话框
- 为gridview“删除”列添加确认对话框