J'ai 3 lignes de données dans la base de données. J'ai d'abord chargé ces données dans un ensemble de données, mais je n'ai pas réussi à charger ces 3 lignes dans dgvCustListing. Il ne charge que les dernières données avec 3 espaces vides en haut. Quelqu'un pourrait-il signaler mes erreurs?

Je vous remercie.

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

cliquez pour dgvCustListing image

0
choi 26 avril 2017 à 06:41

2 réponses

Meilleure réponse

Je pense que tu devrais utiliser

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

.. Je pense

0
user5328504 26 avril 2017 à 03:48

Je ne pense pas que vous ayez besoin d'un DataSet. Un dataSet est une représentation en mémoire d'une collection de tables. Vous pouvez opter pour un DataTable à la place.

Déclarer une table de données

DataTable DSCust_Listing = new DataTable();

Au lieu de parcourir le DataSet, faites simplement

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

Ça devrait le faire.

0
Varun Babu Pozhath 26 avril 2017 à 04:25