2017-04-26 12 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 

あなたが実行するための唯一のクエリを持っているので、あなたの代わりにあなたがデータテーブルに結果を移入するためのアダプタを使用することができることのために、データセットを使用する必要はありません。 DTCust_Listingをそのデータ可能にすると、dgvCustListingの場合はDataSourceと割り当てられます。

0

データセットは必要ありません。 dataSetは、テーブルの集合のメモリ表現です。代わりにDataTableに行くことができます。

が代わりにデータセットをループの

DataTable DSCust_Listing = new DataTable(); 

データテーブルを宣言し、それを行う必要があります

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

を行います。

+0

こんにちは、私はこのエラーが出ました:エラー 'System.Windows.Forms.DataGridView'には 'DataBind'の定義がなく、 'System.Windows'タイプの最初の引数を受け入れる拡張メソッド 'DataBind' .Forms.DataGridView 'が見つかりました(usingディレクティブまたはアセンブリ参照がありませんか?) – choi

+0

試したコードを投稿できますか? –

関連する問題