以下的代码传输DataTable没问题,但是其中的dt如果有图片列,图片列会变成字符串,哪位高人能帮帮忙?//得到原始dt
DataTable dt =此处代码略去,生成一个带图片列的dt; DataSet ds = new DataSet();
ds.Tables.Add(dt);
byte[] buf = Encoding.Default.GetBytes(ds.GetXml());
string xml = Encoding.Default.GetString(buf, 0, buf.Length);
System.IO.StringReader sr = new System.IO.StringReader(xml);
DataSet dsb = new DataSet();
DataTable dtb = new DataTable();
dsb.ReadXml(sr);
dtb = dsb.Tables[0];//将dtb绑定到一个带图片列的datagridview就会报错
DataTable dt =此处代码略去,生成一个带图片列的dt; DataSet ds = new DataSet();
ds.Tables.Add(dt);
byte[] buf = Encoding.Default.GetBytes(ds.GetXml());
string xml = Encoding.Default.GetString(buf, 0, buf.Length);
System.IO.StringReader sr = new System.IO.StringReader(xml);
DataSet dsb = new DataSet();
DataTable dtb = new DataTable();
dsb.ReadXml(sr);
dtb = dsb.Tables[0];//将dtb绑定到一个带图片列的datagridview就会报错
2. DataTable 那一列要确认是否是byte[]
1、那一列是DataGridViewImageColumn
2、DataTable转化为byte[]后再转化回来,图片列变成了字符串,我尝试把它转化为byte[],转化后也不行。转化代码如下:
for (int i = 0, iCount = dtb.Rows.Count; i < iCount; i++)
{
dtb.Rows[i]["fPhoto"] = Encoding.Default.GetBytes(dtb.Rows[i]["fPhoto"].ToString());
}
string xml = Encoding.Default.GetString(buf, 0, buf.Length);你直接获取了缓冲区的长度,事实上,数据可能没有这么长。