从数据表中的sql中获取值后,我需要将字节[]转换为图像,并且需要在datagrid中的该视图后添加数据表
问题描述:
我试图查看DataGrid中数据库的值。我有一个名为signature的列,其中包含以字节数组形式存储的图像。但是,我不知道如何在DataGrid中查看这些图像。从数据表中的sql中获取值后,我需要将字节[]转换为图像,并且需要在datagrid中的该视图后添加数据表
这里是我的代码:
DataTable dt = new DataTable("CustomerInformations");
string Cn = "Data Source=\\SQLEXPRESS;Initial Catalog=Export;Integrated Security=true;";
SqlConnection con = new SqlConnection(Cn);
con.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("select [Date],[CustomerName],[Amount],[Bank] ,[Signature] ,[IMEINumber] from PaymentReceipt where ReceiptID = 44", con);
sqlDa.Fill(dt);
con.Close();
this.dataGrid1.DataContext = dt;
有一个数据库称为signature
列。它的数据类型是varbinary
。
在我将数据表分配到datagrid1
之前,我需要将签名(byte[]
)转换为图像。
这里是我的转换byte[]
到的图像代码:
foreach (DataRow dr in dt.Rows)
{
byte[] bytes = (byte[])dr[4];
MemoryStream stream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
我不知道如何添加回图像中的签名字段中的数据表。你能帮我么?
这是我的XAML文件
<Grid>
<DataGrid AutoGenerateColumns="true" Name="dataGrid1" ItemsSource="{Binding}" Height="260" Width="705">
</DataGrid>
</Grid>
答
我不认为你可以自动生成列做。您需要将图像列绑定到ValueConverter。这从文件转换为图像,但它应该让你开始。
http://social.msdn.microsoft.com/Forums/en/wpf/thread/ea1fd63b-738c-40ca-850e-994eb21dccea 您可能需要一个模板列来托管图像查看器。