2016-12-05 17 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

相關問題