网友点聚在打印DataGridView时,因为遇到了格式金额如360为¥360.00,应用金质打印通打印不出格式来,经过一翻的实验,解决了。其实就是读取DataGridView单元格内容时要读FormattedValue。
点聚 15:43:35
public static string[,] ToStringArray(DataGridView dataGridView, bool includeColumnText)
{
#region 实现...
string[,] arrReturn = null;
int rowsCount = dataGridView.Rows.Count;
int colsCount = dataGridView.Columns.Count;
if (rowsCount > 0)
{
//最后一行是供输入的行时,不用读数据。
if (dataGridView.Rows[rowsCount - 1].IsNewRow)
{
rowsCount--;
}
}
int i = 0;
//包括列标题
if (includeColumnText)
{
rowsCount++;
arrReturn = new string[rowsCount, colsCount];
for (i = 0; i < colsCount; i++)
{
arrReturn[0, i] = dataGridView.Columns[i].HeaderText;
}
i = 1;
}
else
{
arrReturn = new string[rowsCount, colsCount];
}
//读取单元格数据
int rowIndex = 0;
for (; i < rowsCount; i++, rowIndex++)
{
for (int j = 0; j < colsCount; j++)
{
arrReturn[i, j] = dataGridView.Rows[rowIndex].Cells[j].FormattedValue.ToString();
}
}
return arrReturn;
#endregion 实现
}
#endregion
点聚 15:43:53
还是你原来的函数,只改变一点点.
点聚 15:44:08
arrReturn[i, j] = dataGridView.Rows[rowIndex].Cells[j].FormattedValue.ToString();
长江支流 15:44:12
长江支流 15:44:24
到CSDN上发个贴与大家分享
点聚 15:45:04
不过还有个小问题,我打印日期,总出现最后一个字打不出来.
点聚 15:45:27
比如: 2006年5月16日 日字就打不出来.
长江支流 15:45:17
宽度够
点聚 15:46:05
我是根据单元格的内容来自动设列宽
长江支流 15:46:21
你可以把它的宽度加1-2
点聚 15:47:27
我试试
点聚 15:50:07
想了我48小时才解决.
这里贴出来与大家共享,多一些时间研究,少走一些弯路!