如何在数据库的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