现在的位置: 首页 > 综合 > 正文

GridView嵌套GridView 级联删除(纯代码删除版本)

2013年03月07日 ⁄ 综合 ⁄ 共 7062字 ⁄ 字号 评论关闭
 

GridView嵌套GridView,对子GridView及父GridView级联删除的问题

本例未考虑异常处理,提示信息及事务处理,有兴趣的朋友可自己添加修改

aspx

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewNesting.aspx.cs" Inherits="GridViewNesting" %>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml" >  
  4. <head runat="server">  
  5.     <title>GridViewNesting</title>  
  6. </head>  
  7. <body>  
  8.     <form id="form1" runat="server">  
  9.     <div>  
  10.     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" OnRowDeleting="GridView1_RowDeleting" >  
  11.         <Columns>  
  12.             <asp:CommandField ShowEditButton="True" />  
  13.             <asp:CommandField ShowDeleteButton="True" />  
  14.             <asp:TemplateField HeaderText="au_id" >  
  15.                 <ItemTemplate>  
  16.                     <asp:Label id="Label1" runat="server" Text='<%# Eval("au_id")%>'></asp:Label>  
  17.                 </ItemTemplate>  
  18.             </asp:TemplateField>  
  19.             <asp:TemplateField  HeaderText="au_lname">  
  20.                 <ItemTemplate>  
  21.                     <asp:Label id="Label2" runat="server" Text='<%# Eval("au_lname")%>'></asp:Label>  
  22.                 </ItemTemplate>  
  23.             </asp:TemplateField>  
  24.             <asp:TemplateField  HeaderText="titleDetail">  
  25.                 <ItemTemplate>  
  26.                     <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id,title_id" DataSource='<%# GetTitleID(Eval("au_id").ToString()) %>' OnRowDeleting="GridView2_OnRowDeleting">  
  27.                      <Columns>  
  28.                         <asp:CommandField ShowEditButton="True" />  
  29.                         <asp:CommandField ShowDeleteButton="True" />  
  30.                          <asp:TemplateField HeaderText="title_id" >  
  31.                              <ItemTemplate>  
  32.                                 <asp:Label id="Label1" runat="server" Text='<%# Eval("title_id")%>'></asp:Label>  
  33.                              </ItemTemplate>  
  34.                          </asp:TemplateField>  
  35.                          <asp:TemplateField  HeaderText="au_ord">  
  36.                              <ItemTemplate>  
  37.                                 <asp:Label id="Label2" runat="server" Text='<%# Eval("au_ord")%>'></asp:Label>  
  38.                              </ItemTemplate>  
  39.                          </asp:TemplateField>  
  40.                         </Columns>  
  41.                     </asp:GridView>  
  42.             </ItemTemplate>  
  43.          </asp:TemplateField>  
  44.         </Columns>  
  45.     </asp:GridView>  
  46.     </div>  
  47.     </form>  
  48. </body>  
  49. </html>  

aspx.cs

  1. using System;   
  2. using System.Data;   
  3. using System.Configuration;   
  4. using System.Collections;   
  5. using System.Web;   
  6. using System.Web.Security;   
  7. using System.Web.UI;   
  8. using System.Web.UI.WebControls;   
  9. using System.Web.UI.WebControls.WebParts;   
  10. using System.Web.UI.HtmlControls;   
  11. using System.Data.SqlClient;   
  12.   
  13. public partial class GridViewNesting : System.Web.UI.Page   
  14. {   
  15.     private void BindGrid()   
  16.     {   
  17.         SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");   
  18.         SqlDataAdapter da = new SqlDataAdapter("select au_id, au_lname from authors", cn);   
  19.         DataSet ds = new DataSet();   
  20.         cn.Open();   
  21.         da.Fill(ds);   
  22.         cn.Close();   
  23.         GridView1.DataSource = ds;   
  24.         GridView1.DataBind();   
  25.     }   
  26.   
  27.     public DataView GetTitleID(string au_id)   
  28.     {   
  29.         SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");   
  30.         SqlDataAdapter da = new SqlDataAdapter("select au_id, title_id, au_ord from titleauthor where au_id = @au_id", cn);   
  31.         da.SelectCommand.Parameters.AddWithValue("@au_id", au_id);   
  32.         DataSet ds = new DataSet();   
  33.         cn.Open();   
  34.         da.Fill(ds);   
  35.         cn.Close();   
  36.         return ds.Tables[0].DefaultView;   
  37.     }   
  38.   
  39.     private void Page_Load(object sender, System.EventArgs e)   
  40.     {   
  41.         if (!IsPostBack)   
  42.         {   
  43.             BindGrid();   
  44.         }   
  45.     }   
  46.   
  47.     protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)   
  48.     {   
  49.         //此段实际应用应考虑事务处理   
  50.         SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");   
  51.         SqlCommand cmd = new SqlCommand();   
  52.         cmd.CommandText = "delete from titleauthor where au_id = @au_id";   
  53.         cmd.Connection = cn;   
  54.         cmd.Parameters.AddWithValue("@au_id", GridView1.DataKeys[e.RowIndex].Value);   
  55.         cn.Open();   
  56.         cmd.ExecuteNonQuery();   
  57.         cmd.CommandText = "delete from authors where au_id = @au_id";   
  58.         cmd.ExecuteNonQuery();   
  59.         cn.Close();   
  60.         BindGrid();   
  61.     }   
  62.   
  63.     protected void GridView2_OnRowDeleting(object sender, GridViewDeleteEventArgs e)   
  64.     {   
  65.         GridView GridView2 = sender as GridView;   
  66.         SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");   
  67.         SqlCommand cmd = new SqlCommand("delete from titleauthor where au_id = @au_id and title_id = @title_id", cn);   
  68.         cmd.Parameters.AddWithValue("@au_id", GridView2.DataKeys[e.RowIndex].Values[0]);   
  69.         cmd.Parameters.AddWithValue("@title_id", GridView2.DataKeys[e.RowIndex].Values[1]);   
  70.         cn.Open();   
  71.         cmd.ExecuteNonQuery();   
  72.         cn.Close();   
  73.         BindGrid();   
  74.     }   
  75. }  

抱歉!评论已关闭.