将行从C#中的dataGridView导出到文本文件只导出第一行

本文关键字:一行 文件 中的 dataGridView 文本 | 更新日期: 2023-09-27 18:03:48

我想将行导出到文本文件中。不是所有行,而是仅在单击导出按钮时在dataGridView中选中的行。我的问题是我的程序只导出输入的第一行,而且只导出一次。当我在选中的条件下选中多行时,我在索引0的单元格中放置了一个复选框。这就是我的导出按钮包含的内容:

private void buttonExport_Click(object sender, EventArgs e)
        {
            System.IO.StreamWriter str = new System.IO.StreamWriter("fichier.txt");
            dataa= dataset.Tables["Rech"];
            str.WriteLine("NumRep  " + " Description   " + " DateRep  " + "  cout  " + " Matricule    " + " CodeRep   " + " CodeTypeRep   ");
            for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
            {

                if (dataGridView1.Rows[i].Cells[0].Selected == true) // checkbox checked
                {

                    str.WriteLine(dataa.Rows[i][0] + "    " + dataa.Rows[i][1] + "    "  +dataa.Rows[i][2]
                      + " " +dataa.Rows[i][3] + "    " + dataa.Rows[i][4] + dataa.Rows[i][5] + " " + dataa.Rows[i][6]);
                }
            }
            str.Close();
        }

我不知道我的逻辑哪里出了问题。

将行从C#中的dataGridView导出到文本文件只导出第一行

尝试更改此项:

if (dataGridView1.Rows[i].Cells[0].Selected == true) // checkbox checked
{
...
}

到此:

DataGridViewCheckBoxCell chkCell = dataGridView1.Rows[i].Cells[0] as DataGridViewCheckBoxCell;
if (chkCell.Value.Equals(chkCell.TrueValue)) // checkbox checked
{
...
}
DataRow row  DataGridView1.Row[i]
DataGridViewCheckBoxCell chk = row.Cells[0] as DataGridViewCheckBoxCell;
if (Convert.ToBoolean(chk.Value) == true)

您可以尝试以上操作,从DataGridView中获取所需内容。它对我有效。

祝你好运!

我已经将我的条件更改为:

if ((bool)dataGridView1.Rows[i].Cells[0].Value == true)

它对我有效。

感谢大家!!