Question

J'essaie d'exporter uniquement les éléments de case à cocher sélectionnés sur une vue de données. Le code actuel que j'ai fonctionne, mais le problème est qu'il exporte tout, je peux voir les valeurs Vrai / Faux dans le fichier csv exporté mais pour la vie de moi, je ne peux pas comprendre comment exporter uniquement les vraies valeurs et pas tout. Un exemple de code est répertorié ci-dessous.

private void GetCellData()
    {
        string data = "";
        string userDesktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        TextWriter tw = new StreamWriter(userDesktop + "\\" + "export.csv");

        // Count each row in the datagrid
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {

            if (dataGridView1.Rows[i].Cells["Selection_Box"].Value != null &&
                (bool)dataGridView1.Rows[i].Cells["Selection_Box"].Value)
            {
                foreach (DataGridViewCell cell in dataGridView1.Rows[i].Cells)
                {
                    data += (cell.Value + ",");
                }
                data += "\n";
            }               
            else
            {
                continue;
            }
        }
        tw.WriteLine(data, "data");
        tw.Close();
    }

La case à cocher sur la grille de données "Selection_Box" est une DataGridViewCheckBoxColumn. ExampleExport est simplement lié à un bouton appelé "Exporter". Lorsque l'utilisateur coche une case dans la grille de données et clique sur "Exporter", un fichier .csv est vidé sur le bureau avec des valeurs similaires à celles répertoriées ci-dessous.

Vrai , 3,1, Tuyauterie, Manuel, RTD, 2,45 Axe,
Vrai , 4,1, Tuyauterie, Manuel, RTD, 2,60 Axe,
Vrai, 5,1, Tuyauterie, Manuel, RTD, 1,5,45 C,
Faux, 6,1, Tuyauterie, Manuel, RTD, 2,45 Axe,
Faux, 8,1, Tuyauterie, Manuel, RTD, 1,5,45 C,
Faux, 29,1, Tuyauterie, Manuel, RTD, 2,45 C,

EDIT: Merci de m'avoir orienté dans la bonne direction, c'est très apprécié. J'ai fini par peaufiner l'instruction if en:

if (dataGridView1.Rows[i].Cells["Selection_Box"].Value != null &&
                (bool)dataGridView1.Rows[i].Cells["Selection_Box"].Value)

Il vide maintenant les valeurs sélectionnées.

Était-ce utile?

La solution

Vous devriez vérifier les valeurs dans la colonne CheckBox, quelque chose comme

if((bool) row.Cells["Column7"] as DataGridViewCheckBoxCell).FormattedValue)

Ce n'est que si vrai que vous ajoutez les valeurs de la ligne

Autres conseils

quelque chose comme ça dans le premier bloc for ....

if(((bool)dataGridView1.Rows[i].Cells[0]) == true)
{
    // Loop through and get the values
    foreach (DataGridViewCell cell in dataGridView1.Rows[i].Cells)
    {
        data = data + (cell.Value + ",");
    }
    data += "\n";
}
else
{
    // else block not really necessary in this case, but illustrates the point....
    continue;
}

Vous pouvez également confirmer si c'est vrai de cette manière

if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Selection_Box"].Value) == true)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top