GridView控件有自带的、可以通过配置完成的删除功能,但是它没有提示,点击直接删除。而且由于和选择、编辑按钮很近,所以也比较容易点错。因此我喜欢把删除按钮单独拿出来,并加入删除提示。
请看下面的例子:
1<asp:GridView ID="GridView2" runat="server" DataKeyNames="id" OnRowDeleting="GridView2_RowDeleting" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" Width="100%" AutoGenerateSelectButton="true" AutoGenerateEditButton="false" AutoGenerateDeleteButton="false" RowStyle-VerticalAlign="NotSet">
2<Columns>
3<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" Visible="false" SortExpression="id" />
4<asp:TemplateField>
5<ItemTemplate>
6
7<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" OnClientClick='return confirm("此删除操作不可恢复,您确认删除此用户吗?")'>删除</asp:LinkButton>
8
9</ItemTemplate>
10<HeaderTemplate> </HeaderTemplate>
11</asp:TemplateField>
12<asp:BoundField DataField="logname" HeaderText="登录名" SortExpression="logname" Visible="true" />
13<asp:BoundField DataField="username" HeaderText="用户名" SortExpression="username" Visible="true" />
14<asp:BoundField DataField="password" HeaderText="密码" SortExpression="password" Visible="false" />
15</Columns>
16</asp:GridView>
17<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NewlandConnectionString %>"
18SelectCommand="SELECT * FROM [Manager] "
19DeleteCommand="DELETE FROM [Manager] WHERE id=@id">
20<DeleteParameters>
21<asp:ControlParameter ControlID="GridView2" Name="id" PropertyName="id" />
22</DeleteParameters>
23</asp:SqlDataSource>
24
2<Columns>
3<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" Visible="false" SortExpression="id" />
4<asp:TemplateField>
5<ItemTemplate>
6
7<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" OnClientClick='return confirm("此删除操作不可恢复,您确认删除此用户吗?")'>删除</asp:LinkButton>
8
9</ItemTemplate>
10<HeaderTemplate> </HeaderTemplate>
11</asp:TemplateField>
12<asp:BoundField DataField="logname" HeaderText="登录名" SortExpression="logname" Visible="true" />
13<asp:BoundField DataField="username" HeaderText="用户名" SortExpression="username" Visible="true" />
14<asp:BoundField DataField="password" HeaderText="密码" SortExpression="password" Visible="false" />
15</Columns>
16</asp:GridView>
17<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:NewlandConnectionString %>"
18SelectCommand="SELECT * FROM [Manager] "
19DeleteCommand="DELETE FROM [Manager] WHERE id=@id">
20<DeleteParameters>
21<asp:ControlParameter ControlID="GridView2" Name="id" PropertyName="id" />
22</DeleteParameters>
23</asp:SqlDataSource>
24
请注意:例子中GridView2的DataKeyNames属性和OnRowDeleting属性,以及LinkButton1的CommandName属性是必须的。DataKeyNames属性指定GridView的索引字段,OnRowDeleting属性指定执行删除操作时调用cs文件中对应的方法,CommandName属性指定点击触发GrifView的Delete操作。
另外,还需要在对应cs文件中加入如下方法:
1protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
2 {
3 int categoryID = (int)GridView2.DataKeys[e.RowIndex].Value;
4 SqlDataSource2.DeleteParameters["id"].DefaultValue = categoryID.ToString();
5}
6
2 {
3 int categoryID = (int)GridView2.DataKeys[e.RowIndex].Value;
4 SqlDataSource2.DeleteParameters["id"].DefaultValue = categoryID.ToString();
5}
6
这个方法实现取得当前要删除的行的id,并将其赋值给SqlDataSource2中SQL语句的id参数。
到这里就实现了删除提示功能。简单实用的功能。