Получение данных из datagridview в строку - PullRequest
2 голосов
/ 05 августа 2011

Я хочу взять каждую строку в сетке данных и добавить ее в строковую переменную, которую я затем распечатаю с помощью пользовательского класса PrintDocument.Все в моей программе работает, за исключением получения данных из datagridview в строковую переменную.Я не могу найти пример того, как это сделать.Разве я не использовал бы просто «foreach (DataRow Row in dataGridView1) ...», чтобы перебрать таблицу данных и добавить ее в мою строковую переменную?Может кто-нибудь показать мне пример этого?

Прямо сейчас мой код выглядит так, но он не скомпилируется (появляется сообщение об ошибке, когда я пытаюсь получить значение из столбца.строка в строку. Сообщение об ошибке: «Наилучший перегруженный метод соответствует для System.Windows.Form.DataGridViewRowCollection.This [int] 'имеет недопустимые аргументы).:

        //Loop through the dataGridView1 and add it to the text
        //that we want to print
        foreach (DataRow row in dataGridView1.Rows)
        {
            textToPrint = textToPrint + dataGridView1.Rows[row][0].ToString() + "\t" +
                dataGridView1.Rows[row][1].ToString() + "\t" +
                dataGridView1.Rows[row][2].ToString() + "\t" +
                dataGridView1.Rows[row][3].ToString() + "\t";
        }

Ответы [ 2 ]

5 голосов
/ 08 августа 2011

Я рекомендую для этого более общий метод, чтобы вам не приходилось переписывать его в будущем.Это также не зависит от того, сколько столбцов у вас может быть в DataGridView.

    public static string DGVtoString(DataGridView dgv, char delimiter)
    {
        StringBuilder sb = new StringBuilder();
        foreach (DataGridViewRow row in dgv.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                sb.Append(cell.Value);
                sb.Append(delimiter);
            }
            sb.Remove(sb.Length - 1, 1); // Removes the last delimiter 
            sb.AppendLine();
        }
        return sb.ToString();
    }
0 голосов
/ 05 августа 2011

Попробуйте это

dataGridView.Rows[RowIndex].Cells[ColumnIndex].Value as string

for (int row = 0 ; row < dataGridView1.Rows.Count; row ++)
{
    textToPrint = textToPrint + 
    dataGridView1.Rows[row].Cells[0].Value.ToString() + "\t" +
    dataGridView1.Rows[row].Cells[1].Value.ToString() + "\t" +
    dataGridView1.Rows[row].Cells[2].Value.ToString() + "\t" +
    dataGridView1.Rows[row].Cells[3].Value.ToString() + "\t";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...