2012-02-21 95 views
2

我正在开发一个asp.net应用程序,我被卡住了,所以我正在寻求一些帮助。数据库:在我的数据库(MySql)中我有表格成分(idI,名称等),每种成分可以有多种成分类型(idT,type_name等)。由于多对多的关系,我有另一个表中包含成分id和成分类型id。如何在gridview中显示两个表中的数据?

应用程序:在我的应用程序中,我有gridview显示来自成分的所有数据。我使用自己的方法称为FillGVIngredient使用数据集和数据适配器填充gridview。

问:我怎样才能显示在我的GridView的另一列这将显示所有属于配料标识的成分类型(在GridView的每一行代表1种成分)子弹列表中,这样的输出将是这样的:

Ingredient_Type  Ingredient id 
-------------------------------------- 
-type 1*    ingredient1 1 
-type 2* 
-type 3* 
-------------------------------------- 
-type 5    ingredient2 2 
-type 6 

*成分类型必须显示在单个单元格中。上面的例子显示了gridview中的两行。

我已经尝试使用带有子弹列表的模板字段,但我不知道如何遍历行,以便将成分ID传递给子弹列表数据源的sql语句。

回答

1

您正处在正确的轨道上。在TemplateField中的BulletedList是正确的方法。但是您应该使用GridView的RowDataBound将其绑定到它的DataSource。看看:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) { 
     var rowView = (DataRowView)e.Row.DataItem; 
     var bullet = (BulletedList)e.Row.FindControl("BulletedList1"); 
     // now get the DataSource according to the ID (f.e. rowView["Ingredient_ID"]) 
     bullet.DataSource = getIngredientTypes(rowView["Ingredient_ID"]); 
     bullet.DataTextField = "Ingredient_Type"; 
     bullet.DataValueField = "Type_ID"; 
     bullet.DataBind(); 
    } 
} 
相关问题