






























































































































2.cs代码
publicclassDataGridNesting:System.Web.UI.Page{
protectedSystem.Web.UI.WebControls.DataGridDataGrid1;
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!Page.IsPostBack)
{
BindDataGrid1();
}
}
#regionWebFormDesignergeneratedcode
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:ThiscallisrequiredbytheASP.NETWebFormDesigner.
//
InitializeComponent();
base.OnInit(e);
this.DataGrid1.ItemCreated+=newDataGridItemEventHandler(DataGrid1_ItemCreated);
}
/**////<summary>
///RequiredmethodforDesignersupport-donotmodify
///thecontentsofthismethodwiththecodeeditor.
///</summary>
privatevoidInitializeComponent()
{
this.DataGrid1.ItemDataBound+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load+=newSystem.EventHandler(this.Page_Load);
}
#endregion
#regionGetDataSet
privateDataSetGetDataSet(stringsql)
{
stringconstring=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlDataAdaptersda=newSqlDataAdapter(sql,constring);
DataSetds=newDataSet();
sda.Fill(ds);
returnds;
}
#endregion
#regionBindDataGrid1
privatevoidBindDataGrid1()
{
stringsql="select*fromClass";
DataSetds=GetDataSet(sql);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
#endregion
#regionBindDataGrid2
privatevoidBindDataGrid2(DataGridgrid2)
{
stringsql="selects.ClassID,s.StudentID,s.StudentName,s.Age,c.ClassNamefromStudentsleftjoinClasscons.ClassID=c.ClassIDwheres.ClassID='"+DataGrid1.DataKeys[Index].ToString()+"'";
DataSetds=GetDataSet(sql);
grid2.DataSource=ds;
grid2.DataBind();
}
#endregion
#regionDataGrid1_ItemDataBound
privatevoidDataGrid1_ItemDataBound(objectsender,DataGridItemEventArgse)
{
if(e.Item.ItemType==ListItemType.Header)
{
e.Item.Cells[0].ColumnSpan=2;//合并单元格
e.Item.Cells[1].Visible=false;
}
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
System.Web.UI.WebControls.ImageButtonimage=(System.Web.UI.WebControls.ImageButton)e.Item.FindControl("ImageButton1");
stringsql="selects.ClassID,s.StudentID,s.StudentName,s.Age,c.ClassNamefromStudentsleftjoinClasscons.ClassID=c.ClassIDwheres.ClassID='"+this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString()+"'";
DataSetds=GetDataSet(sql);
DataGridgrid=(DataGrid)e.Item.FindControl("DataGrid2");
grid.DataSource=ds;
grid.DataBind();
grid.Style.Add("display","none");
}
}
#endregion
#regionEdit_Grid1
protectedvoidEdit_Grid1(objectsender,DataGridCommandEventArgse)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
BindDataGrid1();
}
#endregion
#regionCancel_Grid1
protectedvoidCancel_Grid1(objectsender,DataGridCommandEventArgse)
{
this.DataGrid1.EditItemIndex=-1;
BindDataGrid1();
}
#endregion
#regionUpdate_Grid1
protectedvoidUpdate_Grid1(objectsender,DataGridCommandEventArgse)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm=newSqlCommand("updateClasssetClassName=@ClassName,Description=@DescriptionwhereClassID=@ClassID",conn);
SqlParameterparm1=newSqlParameter("@ClassName",SqlDbType.NVarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("txtClassName")).Text;
SqlParameterparm2=newSqlParameter("@Description",SqlDbType.NVarChar,500);
parm2.Value=((TextBox)e.Item.FindControl("txtDescription")).Text;
SqlParameterparm3=newSqlParameter("@ClassID",SqlDbType.NVarChar,50);
parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
this.DataGrid1.EditItemIndex=-1;
BindDataGrid1();
}
}
#endregion
#regionDelete_Grid1
protectedvoidDelete_Grid1(objectsender,DataGridCommandEventArgse)
{
deletegrid1(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
}
#endregion
#regiondeletegrid1
privatevoiddeletegrid1(stringid)
{
SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm=newSqlCommand("deletefromClasswhereClassID=@ClassID",conn);
SqlParameterparm1=newSqlParameter("@ClassID",SqlDbType.NVarChar,50);
parm1.Value=id;
comm.Parameters.Add(parm1);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
BindDataGrid1();
}
#endregion
#regionDataGrid1_ItemCreated
privatevoidDataGrid1_ItemCreated(objectsender,DataGridItemEventArgse)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
DataGridgrid2=(DataGrid)e.Item.FindControl("DataGrid2");
grid2.ItemDataBound+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.grid2_ItemDataBound);
}
}
#endregion
#regiongrid2_ItemDataBound
protectedvoidgrid2_ItemDataBound(objectsender,DataGridItemEventArgse)
{
}
#endregion
#regiongrid2_EditCommand
protectedvoidgrid2_EditCommand(objectsender,DataGridCommandEventArgse)
{
DataGridgrid2=(DataGrid)sender;
grid2.EditItemIndex=e.Item.ItemIndex;
BindDataGrid2(grid2);
}
#endregion
#regiongrid2_CancelCommand
protectedvoidgrid2_CancelCommand(objectsender,DataGridCommandEventArgse)
{
DataGridgrid2=(DataGrid)sender;
grid2.EditItemIndex=-1;
BindDataGrid2(grid2);
}
#endregion
#regiongrid2_UpdateCommand
protectedvoidgrid2_UpdateCommand(objectsender,DataGridCommandEventArgse)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm=newSqlCommand("updateStudentsetStudentName=@StudentName,ClassID=@ClassID,Age=@AgewhereStudentID=@StudentID",conn);
SqlParameterparm1=newSqlParameter("@StudentName",SqlDbType.NVarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("txtStudentName")).Text;
SqlParameterparm2=newSqlParameter("@ClassID",SqlDbType.NVarChar,500);
parm2.Value=((DropDownList)e.Item.FindControl("drpClass")).SelectedItem.Value;
SqlParameterparm3=newSqlParameter("@Age",SqlDbType.NVarChar,50);
parm3.Value=((TextBox)e.Item.FindControl("txtAge")).Text;
SqlParameterparm4=newSqlParameter("@StudentID",SqlDbType.NVarChar,50);
parm4.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
comm.Parameters.Add(parm4);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
DataGridgrid2=(DataGrid)sender;
grid2.EditItemIndex=-1;
BindDataGrid2(grid2);
}
}
#endregion
#regiongrid2_DeleteCommand
protectedvoidgrid2_DeleteCommand(objectsender,DataGridCommandEventArgse)
{
DataGridgrid2=(DataGrid)sender;
DeleteGrid2(grid2.DataKeys[e.Item.ItemIndex].ToString());
grid2.EditItemIndex=-1;
BindDataGrid2(grid2);
}
#endregion
#regionDeleteGrid2
privatevoidDeleteGrid2(stringid)
{
SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommandcomm=newSqlCommand("deletefromStudentwhereStudentID=@StudentID",conn);
SqlParameterparm1=newSqlParameter("@StudentID",SqlDbType.NVarChar,50);
parm1.Value=id;
comm.Parameters.Add(parm1);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
#endregion
#regionproperty
privateintIndex
{
get
{
if(ViewState["Index"]!=null&&ViewState["Index"].ToString()!="")
{
returnConvert.ToInt32(ViewState["Index"]);
}
else
{
return-1;
}
}
set
{
ViewState["Index"]=value;
}
}
#endregion
#regionItem_Command
protectedvoidItem_Command(objectsender,DataGridCommandEventArgse)
{
Index=e.Item.ItemIndex;
System.Web.UI.WebControls.ImageButtonimage=(System.Web.UI.WebControls.ImageButton)e.Item.FindControl("ImageButton1");
DataGridgrid=(DataGrid)e.Item.FindControl("DataGrid2");
if(image.ImageUrl=="add.gif")
{
image.ImageUrl="sub.gif";
grid.Style.Add("display","block");
}
else
{
image.ImageUrl="add.gif";
grid.Style.Add("display","none");
}
}
#endregion
}





















