程序可以直接拿来使用,运行通过。 ---------------------------------------------------- testconstraint.aspx ---------------------------------------------------- <%@ Page Language="c#" debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <html> <head> <script language="c#" runat="server"> public DataSet ds; void Page_Load(Object sender,EventArgs e) { if(!IsPostBack) { SqlConnection myConnection = new SqlConnection("server=(local);database=northwind;Trusted_Connection=yes"); SqlDataAdapter myDataAdapter1=new SqlDataAdapter("select * from suppliers",myConnection); SqlDataAdapter myDataAdapter2=new SqlDataAdapter("select * from products",myConnection); ds=new DataSet(); myDataAdapter1.Fill(ds,"suppliers"); myDataAdapter2.Fill(ds,"products"); MyDataGrid.DataSource=ds.Tables["suppliers"].DefaultView; MyDataGrid.DataBind(); MyDataGrid2.DataSource=ds.Tables["products"].DefaultView; MyDataGrid2.DataBind(); } } void MyDataGrid_Delete(Object sender,DataGridCommandEventArgs e) { String conn="server=(local);database=northwind;Trusted_Connection=yes"; String selectCommandText1="select * from suppliers"; String selectCommandText2="select * from products"; SqlDataAdapter myDataAdapter1=new SqlDataAdapter(); myDataAdapter1.SelectCommand=new SqlCommand(); myDataAdapter1.SelectCommand.CommandText=selectCommandText1; myDataAdapter1.SelectCommand.Connection=new SqlConnection(conn); SqlDataAdapter myDataAdapter2=new SqlDataAdapter(); myDataAdapter2.SelectCommand=new SqlCommand(); myDataAdapter2.SelectCommand.CommandText=selectCommandText2; myDataAdapter2.SelectCommand.Connection=new SqlConnection(conn); ds=new DataSet(); myDataAdapter1.Fill(ds,"suppliers"); myDataAdapter2.Fill(ds,"products"); CreateConstraint(); int index=(int)e.Item.ItemIndex; ds.Tables["suppliers"].Rows[index].Delete(); ds.Tables["suppliers"].AcceptChanges(); myDataAdapter1.Update(ds,"suppliers"); MyDataGrid.DataSource=ds.Tables["suppliers"].DefaultView; MyDataGrid.DataBind(); MyDataGrid2.DataSource=ds.Tables["products"].DefaultView; MyDataGrid2.DataBind(); } void CreateConstraint() { DataColumn parentColumn,childColumn; ForeignKeyConstraint myForeignKeyConstraint; parentColumn = ds.Tables["suppliers"].Columns["supplierID"]; childColumn = ds.Tables["products"].Columns["supplierID"]; myForeignKeyConstraint = new ForeignKeyConstraint("SupplierForeignKeyConstraint", parentColumn, childColumn); myForeignKeyConstraint.DeleteRule = Rule.Cascade ; myForeignKeyConstraint.UpdateRule = Rule.Cascade ; myForeignKeyConstraint.AcceptRejectRule = AcceptRejectRule.Cascade ; ds.Tables["products"].Constraints.Add(myForeignKeyConstraint) ; ds.EnforceConstraints =true ; } </script> </head> <body> <form runat="server"> <ASP:DataGrid id="MyDataGrid" runat="server" Width="800" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" OnDeleteCommand="MyDataGrid_Delete" DataKeyField="supplierid" > <Columns> <asp:ButtonColumn Text="Delete Employee" CommandName="Delete"/> </Columns> </ASP:DataGrid> <hr> <ASP:DataGrid id="MyDataGrid2" runat="server" Width="800" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" /> </form> </body> </html>
|