我正在开发一个asp.net应用程序而且卡住了,所以我要求一些帮助。
数据库:在我的数据库(MySql)中,我有表格成分(idI,名称等),每种成分可以有多种成分类型(idT,type_name等)。由于有很多关系,我有另一个表,其中包含成分的id和成分类型的id。
应用程序:在我的应用程序中,我有gridview,显示来自成分的所有数据。我使用自己的方法FillGVIngredient来使用数据集和数据适配器填充gridview。
问题:如何在gridView中显示另一列,该列将显示属于成分id的所有成分类型(gridview中的每一行代表1种成分)和子弹列表,以便输出如下所示:
Ingredient_Type Ingredient id
--------------------------------------
-type 1* ingredient1 1
-type 2*
-type 3*
--------------------------------------
-type 5 ingredient2 2
-type 6
*成分类型必须显示在单个单元格中。上面的示例显示了gridview中的2行。
我尝试使用带有项目符号列表的模板字段,但我不知道如何遍历行,以便将成员的id传递给项目符号数据源的sql语句。
答案 0 :(得分: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();
}
}