簡體   English   中英

C#將數據集中的數據插入datagridview

[英]C# Insert data from dataset into datagridview

我在數據庫中有3行數據。 我首先將這些數據加載到數據集中,但未能將這3行加載到dgvCustListing中。 它只加載最后一個數據,頂部有3個空格。 有人可以指出我的錯誤嗎?

謝謝。

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

點擊查看dgvCustListing圖片

我認為你應該使用

dgvCustListing.Rows [rowcount-1] = .....

.. 我認為

為什么不像下面那樣使用綁定來迭代集合並逐行添加呢?

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

由於只有一個查詢要執行,因此您不必使用數據集,而是可以使用適配器將結果填充到數據表中。 假設DTCust_Listing是該數據表,則可以將其分配為dgvCustListing DataSource

我認為您不需要數據集。 數據集是表集合在內存中的表示。 您可以改為使用DataTable。

聲明數據表

DataTable DSCust_Listing = new DataTable();

不必遍歷數據集,而只需執行

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

那應該做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM