2016-12-05 37 views
0

如何在数据库的gridview中显示具有多个值的单行作为多行?如何将单行显示为从数据库到gridview的多行?

例子:

数据库行与价值观 - 也是我的gridview的结果

enter image description here

两个订单的编号是:1

什么结果必须是:

enter image description here

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(); 
       } 
      } 
+0

我建议有不同的ID对数据库中的每一行。这将首先防止问题发生。 – RandomStranger

+0

不能有不同的ID,因为我有多种形式。通过多种形式,我的意思是,用户可以添加尽可能多的书籍,所有的按钮点击加载新的形式@Bas – aiden87

+0

如果我得到这个正确的,你需要一个多对多的关系。在数据库中创建一个包含2个ID的附加表格,其中一个来自用户,另一个来自您的书籍。这样,您的用户可以拥有多本书籍,而您的书籍仍然具有单独的ID。如果这不正确,我强烈建议重新考虑你的数据库结构。 – RandomStranger

回答

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 [Order]")) 
    { 
     conn.Open(); 
     sda.SelectCommand = cmd; 
     sda.Fill(dt); 
     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(); 
    } 
} 
+0

我应该把这个里面的sql命令查询如上? – aiden87

+0

替换'gw1.DataSource = dt; gw1.DataBind(); '以上 – Damith

+0

你可以看看更新,看看是否是这样。因为如果是这样的话......那么gridview甚至不会出现 – aiden87