2017-04-26 89 views
0

我在數據庫中有3行數據。我先將這些數據加載到數據集中,但未能將這3行加載到dgvCustListing中。它只在最上面加載3個空格的數據。任何人都可以請指出我的錯誤?C#將數據集中的數據插入到datagridview中

謝謝。

private void LoadCustListing() 
    { 
     string sQuery = string.Empty; 
     int rowcount = 0; 
     dgvCustListing.Rows.Clear(); 
     string spartyConn = ProcessData.GetpartyConnStr(); 
     using (SqlConnection Conn = new SqlConnection(spartyConn)) 
     { 
      try 
      { 
       Conn.Open(); 
       SqlCommand Cmd = new SqlCommand(); 
       Cmd.Connection = Conn; 
       Cmd.CommandTimeout = 1000; 


       sQuery = "select pd.Party_Id, pd.Outlet_StoreNo, 'storename', pd.Party_Date, 'time', bc.Child_Name, pd.Party_Status " 
       + "from Party_Dtl pd inner join Bday_Child bc " 
       + "on pd.Child_Id = bc.Child_Id " 
       + "inner join Cust_Dtl cd " 
       + "on bc.Parent_Id = cd.Parent_Id " 
       + "where pd.Party_Status = 'open' "; 

       Cmd.CommandText = sQuery.ToString(); 
       SqlDataAdapter ExportAdapter = new SqlDataAdapter(sQuery, Conn); 
       ExportAdapter.SelectCommand.CommandTimeout = 10000; 
       DataSet DSCust_Listing = new DataSet(); 
       ExportAdapter.Fill(DSCust_Listing, "Cust_Listing"); 

       foreach (DataRow DSRow in DSCust_Listing.Tables["Cust_Listing"].Rows) 
       { 
        rowcount += 1; 
        dgvCustListing.Rows.Add(); 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[0].Value = rowcount; 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[2].Value = DSRow["Outlet_StoreNo"]; 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[3].Value = "storename";//DSRow["Outlet"]; 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[4].Value = DateTime.Parse(DSRow["Party_Date"].ToString()); 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[5].Value = "time";//DSRow["Party_Time"]; //Time + AMPM 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[6].Value = DSRow["Child_Name"]; 
        dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[7].Value = DSRow["Party_Status"]; 
       } 
      } 
      catch (Exception ex) 
      { 
       if (ex.Message != "Exception from HRESULT: 0x800A03EC") 
       { 

       } 
      } 
      finally 
      { 
       Conn.Close(); 
      } 
     } 
    } 

​​

回答

0

我認爲你應該使用

dgvCustListing.Rows [行數 - 1] = .....

..我認爲

+0

它的工作!非常感謝你!! – choi

+0

不客氣! – user5328504

+0

如果確實可以幫助您,您可以將其標記爲已接受 –

0

相反的迭代按行收集和添加,爲什麼不使用如下的綁定?

dgvCustListing.AutoGenerateColumns = true; 
dgvCustListing.DataSource = DSCust_Listing; // is your dataset 
dgvCustListing.DataMember = "Cust_Listing"; // is your table name to bind 

因爲你只有一個查詢來執行,你不需要使用DataSet,而不是爲你可以使用適配器結果填充到DataTable。假設DTCust_Listing是那個數據表,那麼你可以指定DataSourcedgvCustListing

0

我不認爲你需要一個DataSet。 dataSet是一組表的一組表。您可以改爲使用DataTable。

聲明數據表中

DataTable DSCust_Listing = new DataTable(); 

而是通過DataSet循環的,只是做

if(DSCust_Listing != null) 
{ 
    dgvCustListing.DataSource = DSCust_Listing; 
    dgvCustListing.DataBind(); 
} 

應該這樣做。

+0

嗨,我試過了,這個錯誤出來了:Error 'System.Windows.Forms.DataGridView'沒有包含'DataBind'的定義,也沒有接受'System.Windows'類型的第一個參數的擴展方法'DataBind' .Forms.DataGridView'可以找到(你是否缺少使用指令或程序集引用?) – choi

+0

你可以發佈你試過的代碼嗎? –

相關問題