将数据从datagridview获取到字符串

时间:2011-08-05 19:53:39

标签: c# string datagridview

我想在datagridview中获取每一行并将其添加到字符串变量中,然后我将使用自定义PrintDocument类进行打印。我的程序中的所有内容都可以工作,除了将datagridview中的数据转换为字符串变量。我找不到一个如何做到这一点的例子。我不会只使用“foreach(DataGridView中的DataRow Row)......”循环数据表并将其添加到我的字符串变量中吗?有人能告诉我这个例子吗?

现在,我的代码看起来像这样,但它不会编译(在我试图从column.row获取值到字符串的方式上获取错误消息。错误消息是“最好的” '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 个答案:

答案 0 :(得分:5)

我建议使用更通用的方法,以便将来不必重写它。这也与您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();
    }

答案 1 :(得分:0)

试试这个

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