如何在數據庫的gridview中顯示具有多個值的單行作爲多行?如何將單行顯示爲從數據庫到gridview的多行?
例子:
數據庫行與價值觀 - 也是我的gridview的結果
兩個訂單的編號是:1
什麼結果必須是:
ID兩種順序是:1
我至今
DataTable dt = new DataTable();
string cs = ConfigurationManager.ConnectionStrings["mk"].ConnectionString;
using (SqlConnection conn = new SqlConnection(cs))
{
using (SqlCommand cmd = new SqlCommand("SELECT bookName, numOfItems, category, FROM [Orders]))
{
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
try
{
conn.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
gw1.DataSource = dt;
gw1.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
更新
DataTable dt = new DataTable();
string cs = ConfigurationManager.ConnectionStrings["mk"].ConnectionString;
using (SqlConnection conn = new SqlConnection(cs))
{
using (SqlCommand cmd = new SqlCommand("SELECT bookName, numOfItems, category FROM [Order]"))
{
var newdt= dt.Clone();
foreach (DataRow row in dt.Rows)
{
var bookNames= row.Field<string>("bookName").Split(',');
var numOfItems= row.Field<string>("numOfItems").Split(',');
var categorys= row.Field<string>("category").Split(',');
//assume all columns having asme number of items seperated by comma
for (int i = 0; i < bookNames.Length; i++)
{
var newRow = newdt.Rows.Add();
newRow.SetField("bookName", bookNames[i]);
newRow.SetField("numOfItems", numOfItems[i]);
newRow.SetField("category", categorys[i]);
}
}
gw1.DataSource = newdt;
gw1.DataBind();
}
}
我建議有不同的ID對數據庫中的每一行。這將首先防止問題發生。 – RandomStranger
不能有不同的ID,因爲我有多種形式。通過多種形式,我的意思是,用戶可以添加儘可能多的書籍,所有的按鈕點擊加載新的形式@Bas – aiden87
如果我得到這個正確的,你需要一個多對多的關係。在數據庫中創建一個包含2個ID的附加表格,其中一個來自用戶,另一個來自您的書籍。這樣,您的用戶可以擁有多本書籍,而您的書籍仍然具有單獨的ID。如果這不正確,我強烈建議重新考慮你的數據庫結構。 – RandomStranger