Pourquoi ne peut-on pas vérifier la première ligne dans datagridview C# les résultats de mon code toutes les données sauf la première ligne ?

la programmation


laissez deviner que datagridview a chargé 10 données. Lorsque j’ai cliqué sur SelectALL, 9 lignes ont été cochées vraies mais la première ligne n’a pas été cochée fausse.

même si

datagridview loaded only one data then i clicked SelectALL but row not selected

What I have tried:

private void ReportViewer_Load(object sender, EventArgs e)
        {
    grdEmailData.ColumnHeaderMouseClick += grdEmailData_ColumnHeaderMouseClick;
       
 }

private void btnSearch_Click(object sender, EventArgs e)
        {
            try
            {
                using (SqlConnection connection = new SqlConnection(ConnectionString))
                {
                    connection.Open();

                    string query = "SELECT * FROM email_notification WHERE bank_code = @BankCode AND stmdate = @StmDate " +
                                   "UNION " +
                                   "SELECT * FROM email_notification_arc WHERE bank_code = @BankCode AND stmdate = @StmDate";

                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        command.Parameters.AddWithValue("@BankCode", _fiid); // Assuming _serverName is the bank code
                        command.Parameters.AddWithValue("@StmDate", dtpStmDate.Value.ToString("dd/MM/yyyy")); 

                        SqlDataAdapter adapter = new SqlDataAdapter(command);
                        DataTable dataTable = new DataTable();
                        adapter.Fill(dataTable);


                        DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
                        checkBoxColumn.HeaderText = "SelectALL";
                        checkBoxColumn.Name = "All";
                        grdEmailData.Columns.Insert(0, checkBoxColumn);


                        // Bind the data to the DataGridView
                        grdEmailData.DataSource = dataTable;

                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error loading data: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

 private void grdEmailData_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            // Check if the clicked cell is in the "All" column header
            if (e.RowIndex == -1 && e.ColumnIndex == grdEmailData.Columns["All"].Index)
            {
                ToggleSelectAll();
            }
        }


        private void ToggleSelectAll()
        {
            // Toggle the select/unselect all logic in the "All" column
            bool selectAll = true;

            foreach (DataGridViewRow row in grdEmailData.Rows)
            {
                
                DataGridViewCheckBoxCell checkBoxCell = row.Cells["All"] as DataGridViewCheckBoxCell;

                if (checkBoxCell != null)
                {
                    checkBoxCell.Value = selectAll;
                }
            }
        }

Solution 1

Nous ne pouvons pas le savoir : nous ne pouvons pas exécuter votre code avec vos données et voir ce qui se passe.

Donc, ça va dépendre de vous.
Heureusement, vous disposez d’un outil qui vous aidera à comprendre ce qui se passe : le débogueur. Si vous ne savez pas comment l’utiliser, un rapide Google pour “Débogueur Visual Studio” devrait vous donner les informations dont vous avez besoin.

Placez un point d’arrêt sur la première ligne de la méthode ToggleSelectAll et exécutez votre code via le débogueur. Ensuite, examinez votre code et vos données et déterminez ce qui doit se produire manuellement. Ensuite, passez chaque ligne en vérifiant que ce à quoi vous vous attendiez est exactement ce qui s’est produit. Lorsque ce n’est pas le cas, c’est à ce moment-là que vous avez un problème et vous pouvez revenir en arrière (ou l’exécuter à nouveau et regarder de plus près) pour découvrir pourquoi.
À première vue, la première ligne ne contient pas de DataGridViewCheckBoxCell, donc le test ne réussit pas – mais nous ne pouvons pas dire ce qu’elle contient.

Désolé, mais nous ne pouvons pas faire cela à votre place. Il est temps pour vous d’apprendre une nouvelle (et très, très utile) compétence : le débogage !

コメント

タイトルとURLをコピーしました