最近写的SQL中有如下部分
ROUND(SUM(u.`ProdQTY`) / (SUM(u.`SpentTime`)/60),5) AS UPH
当输出到ListView时,变成了System.Byte[].很明显.类型为Byte[]时,没能成功转换成为string.
DataTableToListView 方法
/// /// DataTable To ListView
/// AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
///
///
///
public static void DataTableToListView2(ListView lv, DataTable dt)
{
if (dt != null)
{
lv.Items.Clear();
lv.Columns.Clear();
for (int i = 0; i < dt.Columns.Count; i++)
{
lv.Columns.Add(dt.Columns[i].Caption.ToString());
}
foreach (DataRow dr in dt.Rows)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = dr[0].ToString();
for (int i = 1; i < dt.Columns.Count; i++)
{
lvi.SubItems.Add(dr[i].ToString());
}
lv.Items.Add(lvi);
}
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
}
检查出错的值
dt.Rows[0][4]
{byte[9]}
[0]: 51
[1]: 57
[2]: 54
[3]: 46
[4]: 54
[5]: 49
[6]: 57
[7]: 55
[8]: 50
发现无法转换为string
把sql语句中相关的
ROUND(SUM(u.`ProdQTY`) / (SUM(u.`SpentTime`)/60),5) AS UPH
修改为
CONVERT(ROUND(SUM(u.`ProdQTY`) / (SUM(u.`SpentTime`)/60),5),CHAR(10)) AS UPH 后正常.
所以
当我们的输出值不是默认支持的类型时,则记得要进行转换.