De_MainList为DataGrid1的ID
De_ArticleList为DataGrid2的ID
在DataGrid1中必须添加DataKeyField="ID"参数ID 为主表的和次表的关联字段。
首先在InitializeComponet()中添加下面代码
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.De_MainList.ItemDataBound += new DataGridItemEventHandler(this.De_MainList_ItemDataBound);
}
Page_Load事件里添加代码
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
De_MainListBind();
}
}
写一个方法来获取DataSet,返回DataSet
private DataSet GetDataSet(string sql)
{
SqlConnection connstring = new SqlConnection(ConfigurationSettings.AppSettings["RCConn"]);
SqlDataAdapter sda = new SqlDataAdapter(sql , connstring);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
}
绑定DataGrid1
private void De_MainListBind()
{
string sql = "select * from MainList";
DataSet ds = GetDataSet(sql);
this.De_MainList.DataSource = ds;
this.De_MainList.DataBind();
}
当数据绑定到DataGrid1时发生触发面的函数
private void De_MainList_ItemDataBound(object sender , DataGridItemEventArgs e)
{
//暂时不明白什么意思
if (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
string sql="select * from ArticleList where Partent="+this.De_MainList.DataKeys[e.Item.ItemIndex].ToString();
DataSet ds=GetDataSet(sql);
//暂时不明白什么意思
DataGrid grid = (DataGrid)e.Item.FindControl("De_ArticleList");
grid.DataSource=ds;
grid.DataBind();
}
}
这些代码仅简单的实现了两个DataGrid的嵌套,可以根据这个思路添加功能