如何使用c#在带有csv文件数据的datagriview中添加列复选框

本文关键字:datagriview 添加 复选框 数据 文件 何使用 csv | 更新日期: 2023-09-27 18:11:45

我想添加一个新的列与复选框,我的数据是从一个csv文件,并显示在一个datagridview与此代码:

DataTable dtDataSource = new DataTable();
string[] fileContent = File.ReadAllLines('data.csv);
if (fileContent.Count() > 0)
{
    //Create data table columns
    dtDataSource.Columns.Add("ID);
    dtDataSource.Columns.Add("Data 1");
    dtDataSource.Columns.Add("Data 2");
    dtDataSource.Columns.Add("Status");
    //Add row data dynamically
    for (int i = 1; i < fileContent.Count(); i++)
    {
        string[] rowData = fileContent[i].Split(',');
        dtDataSource.Rows.Add(rowData);
    }
    if (dtDataSource != null)
    {
        dataGridView1.DataSource = dtDataSource;
    }
}

但我也需要验证,如果复选框被选中,列"状态",他们的值必须改变1或如果它是未选中的值必须为0在每一行的datagridview

的例子:

ID,Data1,Data2,Status,checkbox
1,aaa,bbb,0,✓
2,ccc,ddd,1,(unchecked)
3,eee,fff,1,(unchecked)

当您点击保存按钮时,csv文件看起来应该是这样的:

ID,Data1,Data2,Status
1,aaa,bbb,1
2,ccc,ddd,0
3,eee,fff,0

我该怎么办?什么好主意吗?CSV文件对我来说有点难。

谢谢!

如何使用c#在带有csv文件数据的datagriview中添加列复选框

我解决了这个问题,谢谢。

这是代码:

string id;
        for (int i = 0; i < dataGridView1.RowCount; i++)   {
        String path = "''registros.csv";
        List<String> lines = new List<String>();
        if (File.Exists(path))
        {
            using (StreamReader reader = new StreamReader(path))
            {
                String line;
                while ((line = reader.ReadLine()) != null)
                {
                    id = (string)dataGridView1.Rows[i].Cells[2].Value;
                    if (line.Contains(","))
                    {
                        String[] split = line.Split(',');
                        if (split[1].Equals(id) && (bool)dataGridView1.Rows[i].Cells[0].FormattedValue == true)
                        {
                            split[10] = "" + 1;
                            line = String.Join(",", split);
                        }
                        if (split[1].Equals(id) && (bool)dataGridView1.Rows[i].Cells[0].FormattedValue == false) 
                        {
                            split[10] = "" + 0;
                            line = String.Join(",", split);
                        }
                    }
                    lines.Add(line);
                }
            }
            using (StreamWriter writer = new StreamWriter(path, false))
            {
                foreach (String line in lines)
                    writer.WriteLine(line);
            }
        }
    }