aspx
view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewNesting.aspx.cs" Inherits="GridViewNesting" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridViewNesting</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" OnRowDeleting="GridView1_RowDeleting" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="au_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("au_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_lname">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_lname")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="titleDetail">
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id,title_id" DataSource='<%# GetTitleID(Eval("au_id").ToString()) %>' OnRowDeleting="GridView2_OnRowDeleting">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="title_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("title_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_ord">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_ord")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewNesting.aspx.cs" Inherits="GridViewNesting" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridViewNesting</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" OnRowDeleting="GridView1_RowDeleting" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="au_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("au_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_lname">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_lname")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="titleDetail">
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id,title_id" DataSource='<%# GetTitleID(Eval("au_id").ToString()) %>' OnRowDeleting="GridView2_OnRowDeleting">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="title_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("title_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_ord">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_ord")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
aspx.cs
view plaincopy to clipboardprint?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class GridViewNesting : System.Web.UI.Page
{
private void BindGrid()
{
SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select au_id, au_lname from authors", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
GridView1.DataSource = ds;
GridView1.DataBind();
}
public DataView GetTitleID(string au_id)
{
SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select au_id, title_id, au_ord from titleauthor where au_id = @au_id", cn);
da.SelectCommand.Parameters.AddWithValue("@au_id", au_id);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
return ds.Tables[0].DefaultView;
}
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//此段实际应用应考虑事务处理
SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete from titleauthor where au_id = @au_id";
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@au_id", GridView1.DataKeys[e.RowIndex].Value);
cn.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "delete from authors where au_id = @au_id";
cmd.ExecuteNonQuery();
cn.Close();
BindGrid();
}
protected void GridView2_OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView GridView2 = sender as GridView;
SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=pubs");
SqlCommand cmd = new SqlCommand("delete from titleauthor where au_id = @au_id and title_id = @title_id", cn);
cmd.Parameters.AddWithValue("@au_id", GridView2.DataKeys[e.RowIndex].Values[0]);
cmd.Parameters.AddWithValue("@title_id", GridView2.DataKeys[e.RowIndex].Values[1]);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
BindGrid();
}
}
GridView嵌套GridView,对子GridView及父GridView级联删除的问题,使用SqlDataSource删除版本
view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewNesting.aspx.cs" Inherits="GridViewNesting" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridViewNesting</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="au_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("au_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_lname">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_lname")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="titleDetail">
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id,title_id" DataSourceID="SqlDataSource2">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="title_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("title_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_ord">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_ord")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="Data Source=./sqlexpress;Initial Catalog=pubs;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="select au_id, title_id, au_ord from titleauthor where au_id = @au_id" DeleteCommand="delete from titleauthor where au_id = @au_id and title_id = @title_id">
<SelectParameters>
<asp:Parameter Name="au_id" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="au_id" />
<asp:Parameter Name="title_id" />
</DeleteParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=./sqlexpress;Initial Catalog=pubs;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="select au_id, au_lname from authors" DeleteCommand="delete from titleauthor where au_id = @au_id;delete from authors where au_id = @au_id">
<DeleteParameters>
<asp:Parameter Name="au_id" />
</DeleteParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewNesting.aspx.cs" Inherits="GridViewNesting" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridViewNesting</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="au_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("au_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_lname">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_lname")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="titleDetail">
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="au_id,title_id" DataSourceID="SqlDataSource2">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="title_id" >
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# Eval("title_id")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="au_ord">
<ItemTemplate>
<asp:Label id="Label2" runat="server" Text='<%# Eval("au_ord")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="Data Source=./sqlexpress;Initial Catalog=pubs;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="select au_id, title_id, au_ord from titleauthor where au_id = @au_id" DeleteCommand="delete from titleauthor where au_id = @au_id and title_id = @title_id">
<SelectParameters>
<asp:Parameter Name="au_id" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="au_id" />
<asp:Parameter Name="title_id" />
</DeleteParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=./sqlexpress;Initial Catalog=pubs;Integrated Security=True"
ProviderName="System.Data.SqlClient" SelectCommand="select au_id, au_lname from authors" DeleteCommand="delete from titleauthor where au_id = @au_id;delete from authors where au_id = @au_id">
<DeleteParameters>
<asp:Parameter Name="au_id" />
</DeleteParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>aspx.cs
view plaincopy to clipboardprint?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class GridViewNesting : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
SqlDataSource sqlDataSource2;
if (e.Row.RowType == DataControlRowType.DataRow)
{
sqlDataSource2 = e.Row.FindControl("SqlDataSource2") as SqlDataSource;
if (sqlDataSource2 != null)
{
sqlDataSource2.SelectParameters["au_id"].DefaultValue = (e.Row.DataItem as DataRowView)["au_id"].ToString();
}
}
}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class GridViewNesting : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
SqlDataSource sqlDataSource2;
if (e.Row.RowType == DataControlRowType.DataRow)
{
sqlDataSource2 = e.Row.FindControl("SqlDataSource2") as SqlDataSource;
if (sqlDataSource2 != null)
{
sqlDataSource2.SelectParameters["au_id"].DefaultValue = (e.Row.DataItem as DataRowView)["au_id"].ToString();
}
}
}
}