轉帖|其它|編輯:郝浩|2011-01-21 11:50:21.000|閱讀 6147 次
概述:也許有的人說,顯示圖片還不是很簡單的事情,保存圖片路徑到數據庫的方式顯示圖片也是很簡單的啊!但是在gridControl中以cardview 來顯示的時候沒有想datagridview中相類似的cellFormatting事件來更改顯示的方式,所以還通過中間轉換才能夠將對應的圖片顯示到 cardview中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
也許有的人說,顯示圖片還不是很簡單的事情,保存圖片路徑到數據庫的方式顯示圖片也是很簡單的啊!但是在gridControl中以cardview來顯示的時候沒有想datagridview中相類似的cellFormatting事件來更改顯示的方式,所以還通過中間轉換才能夠將對應的圖片顯示到cardview中。
用gridControl控件中的cardview方式顯示圖片有兩種方式,
一種是直接把圖片以二進制的形式存入數據庫中,在顯示時直接通過dataset將其對應的信息取出賦值給datatable再把其與gridControl的數據源綁定。即可顯示。此種方式簡單方便,但是比較好資源,占用了數據庫大量的空間。不推薦。
第二種是把圖片以其路徑的形式存入數據庫中,顯示時通過路徑來獲取圖片的二進制再把獲取的二進制的值賦值給datatable,綁定到gridControl即可。雖然看起來比較麻煩,但還是推薦用這種方式。暫時還沒有找到更好的方法,若有人有更好的方法,希望分享下下...
下面是兩種方法實現的主要代碼。
方式一:
前提:圖片以二進制存到了數據庫中。
Public adata As New testDatesetTableAdapters.TestTableAdapter
Public testtbaAs New testDateset.TestDataTable
adata.FillByVipNum(testtba, testNum)//table name,param1
If testtba.Rows.Count > 0 Then
GridControl1.DataSource = testtba
方式二:(C#)
//顯示數據
private void showData(List<Employee > list)
{
DataTable dt = new DataTable("OneEmployee");
dt.Columns.Add("Caption", System.Type.GetType("System.String"));
dt.Columns.Add("Department", System.Type.GetType("System.String"));
dt.Columns.Add("PhotoName", System.Type.GetType("System.Byte[]"));
for (int i = 0; i < list.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Caption"] = list[i].Name;
dr["Department"] = list[i].Department;
string imagePath = @"D:\C#\photos\" + list[i].PhotoPath;
dr["PhotoName"] = getImageByte(imagePath);
dt.Rows.Add(dr);
}
gridControl1.DataSource = dt;
}
//返回圖片的字節流byte[]
private byte[] getImageByte(string imagePath)
{
FileStream files = new FileStream(imagePath, FileMode.Open);
byte[] imgByte = new byte [files.Length ];
files.Read(imgByte, 0, imgByte.Length);
files.Close();
return imgByte;
}
效果圖為:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載