2012-02-21 66 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(); 
    } 
} 
相關問題