我想在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";
}
答案 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";
}