C#导出选定的DataGridViewCheckBoxCell

时间:2011-06-16 11:13:20

标签: c# datagridviewcheckboxcell

我正在尝试仅导出datagridview上的所选复选框项。我当前的代码有效,但问题是它导出了所有东西,我能在导出的csv文件中看到True / False值,但对于我的生活,我无法弄清楚如何只导出真值和不是一切。示例代码如下所示。

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

datagrid“Selection_Box”上的复选框是DataGridViewCheckBoxColumn。 ExampleExport只链接到一个名为“Export”的按钮。当用户在数据网格中选中一个复选框并单击“导出”时,会将.csv文件转储到桌面,其值与下面列出的值类似。

True ,3,1,Piping,Manual,RTD,2,45 Ax,
True ,4,1,管道,手动,RTD,2,60 Ax,
是的,5,1,管道,手动,RTD,1.5,45 C,
假,6,1,管道,手动,RTD,2,45 Ax,
False,8,1,Piping,Manual,RTD,1.5,45 C,
False,29,1,Piping,Manual,RTD,2,45 C,

编辑:感谢您指出我正确的方向,非常感谢。我最终将if语句调整为:

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

现在正在转储所选的值。

3 个答案:

答案 0 :(得分:2)

第一个阻止内容的类似内容......

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

答案 1 :(得分:2)

您应该检查CheckBox列中的值,例如

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

仅当为true时才附加行的值

答案 2 :(得分:0)

您也可以通过这种方式确认是否属实

if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Selection_Box"].Value) == true)