C # Экспорт выбранного DataGridViewCheckBoxCell - PullRequest
0 голосов
/ 16 июня 2011

Я пытаюсь экспортировать только выбранные элементы-флажки в сетке данных. Текущий код у меня работает, но проблема в том, что он экспортирует все, я могу видеть значения True / False в экспортированном CSV-файле, но я не могу понять, как экспортировать только истинные значения и не все. Пример кода приведен ниже.

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

Флажок в сетке данных «Selection_Box» является DataGridViewCheckBoxColumn. ExampleExport просто связан с кнопкой «Экспорт». Когда пользователь устанавливает флажок в сетке данных и нажимает «Экспорт», файл CSV сбрасывается на рабочий стол со значениями, аналогичными перечисленным ниже.

True , 3,1, Piping, Manual, RTD, 2,45 Ax,
True , 4,1, Piping, Manual, RTD, 2,60 Axe,
True, 5,1, Piping, Manual, RTD, 1,5,45 C,
False, 6,1, Piping, ручной, RTD, 2,45 Axe,
False, 8,1, Piping, Manual, RTD, 1,5,45 C,
False, 29,1, Piping, ручной, RTD, 2,45 C,

РЕДАКТИРОВАТЬ: Спасибо за указание мне в правильном направлении, это очень ценится. В итоге я настроил оператор if на:

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

Теперь выводятся выбранные значения.

Ответы [ 3 ]

2 голосов
/ 16 июня 2011

Вы должны проверить значения в столбце CheckBox, например,

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

Только если true, тогда вы добавляете значения строки

2 голосов
/ 16 июня 2011

как-то так в первом блоке ....

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;
}
0 голосов
/ 23 февраля 2016

Вы также можете подтвердить, верно ли это и так

if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Selection_Box"].Value) == true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...