Spread提供了数据绑定功能,它允许可以绑定Spread到不同类型的数据源。请参考下面的链接,介绍如何绑定Spread到数据源:
http://helpcentral.componentone.com/NetHelp/SpreadNet6/ASP2/spweb-databound.html
数据库中的数据多种多样,从text到boolean、images。由此,Spread加载不同类型的数据映射为不同的列类型(celltypes)。例如:textual文本数据类型被映射为TextCellType类型,数字类型被映射为CurrencyCellType、IntegerCellType或DoubleCellType类型。
但是,存储在数据库中的images数据不能给直接映射加载。Images在数据库中存储的格式为byte[], 因此Spread加载后会映射为字节流对象。本文接着讨论Spread中如何加载Images数据类型。
Spread加载数据库中图像的方法理论如下:把保存在数据库中的字节数组转换为位图图像,在位图图像创建后,它被保存在项目文件夹下,以便它可以被Spread直接访问。
以下是代码片段:
1: OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(@"\App_Data\C1NWind.mdb"));
2: OleDbCommand comm = new OleDbCommand("Select FirstName, Photo from Employees", conn);
3: OleDbDataAdapter adap = new OleDbDataAdapter(comm);
4: System.Data.DataSet ds = new System.Data.DataSet();
5: adap.Fill(ds);
6: FpSpread1.DataSource = ds;
7: int index = 0;
8: foreach (DataRow dr in ds.Tables[0].Rows)
9: {
10: //Code to save the binary image to an image file in the website folder
11: barr = (byte[])ds.Tables[0].Rows[index][1];
12: TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
13: Bitmap bm = (Bitmap)tc.ConvertFrom(barr);
14: bm.Save(Server.MapPath("~/Images/Image" + (index + 1).ToString() + ".jpg"));
15: }
16:
最后,你需要修改加载图片的单元格的celltype为ImageCellType,用于在Spread中呈现images。 请通过如下链接了解更多细节:
http://helpcentral.componentone.com/NetHelp/SpreadNet6/ASP2/spweb-setimagecell.html
如上链接所示,ImageCellType类的ImageURL属性用于加载图片,
正如上面的链接所述,ImageCellType的单元格的ImageUrl属性用于加载图像。因此,只要将特定的图像URL到ImageUrl。你将为每个单元创建ImageCellType的一个新实例,作为每个单元格中被加载的新图像。
以下是代码片段描述:
1: //Code to load the image into the Spread cell
2: FpSpread1.ActiveSheetView.Cells[index, 1].Value = null;
3: FarPoint.Web.Spread.ImageCellType ict = new FarPoint.Web.Spread.ImageCellType();
4: ict.TextOnRight = false;
5: ict.ImageAlign = ImageAlign.AbsMiddle;
6: ict.ImageUrl = "~/Images/Image" + (index + 1).ToString() + ".jpg";
7: FpSpread1.ActiveSheetView.Cells[index, 1].CellType = ict;
8:
代码如下: