国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

利用數據集在水晶報表中顯示圖像的 .NET 程序教程

2024-07-10 13:03:42
字體:
來源:轉載
供稿:網友

目錄

描述
文件列表
步驟
form1.cs
vb.net 版


描述

該 c# .net windows 程序演示了如何創建數據集,并將圖像添加到數據集,以及在運行時將數據集傳遞到子報表。


文件列表

- bin/debug/canada.jpg
- bin/debug/germany.jpg
- bin/debug/japan.jpg
- bin/debug/usa.jpg
- app.ico
- assemblyinfo.cs
- crystalreport1.cs
- crystalreport1.rpt
- dynamicimage.csproj
- dynamicimage.csproj.user
- dynamicimage.sln
- form1.cs
- form1.resx
- readme.txt
- steps.txt


步驟

* 開始一個新項目/創建數據集及其模式

- 新建項目
- 轉到 form1.cs 后置的代碼
- imports system.data/system.io
- 創建函數 "createdata",以創建數據集:

dataset createdata()
{
dataset data = new dataset();
data.tables.add("images");
data.tables[0].columns.add("country", system.type.gettype("system.string"));
data.tables[0].columns.add("img", system.type.gettype("system.byte[]"));
data.writexmlschema(directory.getcurrentdirectory() + "//dynamicimage.xsd");
}

- 創建函數 "createreport",以調用 createdata 創建數據集模式:

void createreport()
{
createdata();
}

- 在構造函數中調用 createreport

public form1()
{
//
// required for windows form designer support
//
initializecomponent();

//
// todo: add any constructor code after initializecomponent call
//
createreport();
}

- 構造并執行程序/將在 bin/debug 文件夾中創建 dynamicimage.xsd。


* 設計報表

- 項目->添加新項
- 選擇 crystal report,并單擊“打開”
- 選擇“作為空白報表”,并單擊“確定”
- 右擊任意空白處,選擇“數據庫->添加/刪除數據庫”
- 展開 odbc (rdo),選擇 xtreme sample database,并單擊“完成”。
- 展開表,雙擊 customer
- 單擊“確定”
- 將 customer name 和 last year's sales 拖放到詳細資料
- 右擊任意空白處,插入->子報表
- 將子報表放置在 last year's sales 旁邊
- 選擇“創建子報表”,并將子報表命名為 "flags",單擊“報表專家”
- 擴展“更多數據源”,選擇 ado.net (xml)
- 找到 dynamicimage.xsd,并單擊“完成”
- 雙擊 images
- 單擊“下一步”,雙擊 img,單擊“完成”
- 單擊“鏈接”選項卡
- 雙擊 country,并單擊“確定”
- 調整子報表的大小
- 在子報表上雙擊,以打開子報表
- 刪除報表頁眉 b 和報表頁腳 b
- 右擊 -> 關閉子報表


* 回到代碼,并編寫 crystal 代碼

- 將 crystalreportviewer 控件拖放到窗體 form1
- 選擇 crystalreportviewer1,f4(屬性)
- 改變 dock 屬性,填充
- 查看代碼
- 注釋掉 writexmlschema(因為只在設計報表時需要數據集模式文件)
- 在 createdata 函數中組裝數據集,并將其返回

void addimagerow(datatable tbl, string name, string filename)
{
filestream fs = new filestream(filename, filemode.open);
binaryreader br = new binaryreader(fs);
datarow row;
row = tbl.newrow();
row[0] = name;
row[1] = br.readbytes((int)br.basestream.length);
tbl.rows.add(row);
br = null;
fs = null;
}

dataset createdata()
{
dataset data = new dataset();
data.tables.add("images");
data.tables[0].columns.add("country", system.type.gettype("system.string"));
data.tables[0].columns.add("img", system.type.gettype("system.byte[]"));
//data.writexmlschema(directory.getcurrentdirectory() + "//dynamicimage.xsd");
addimagerow(data.tables[0], "usa", directory.getcurrentdirectory() + "//usa.jpg");
addimagerow(data.tables[0], "canada", directory.getcurrentdirectory() + "//canada.jpg");
addimagerow(data.tables[0], "germany", directory.getcurrentdirectory() + "//germany.jpg");
addimagerow(data.tables[0], "japan", directory.getcurrentdirectory() + "//japan.jpg");
return (data);
}


- 創建報表文檔,將數據集傳遞到子報表,并將報表綁定到水晶報表查看器:

void createreport()
{
crystalreport1 cr = new crystalreport1();
cr.opensubreport("flags").setdatasource(createdata());
crystalreportviewer1.reportsource = cr;
}



form1.cs

using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using system.data;
using system.io;

namespace dynamicimage
{
/// <summary>
/// summary description for form1.
/// </summary>
public class form1 : system.windows.forms.form
{
private crystaldecisions.windows.forms.crystalreportviewer crystalreportviewer1;
/// <summary>
/// required designer variable.
/// </summary>
private system.componentmodel.container components = null;

// 過程: addimagerow
// 讀取圖像文件,并將其添加到數據集的表中
//
// [in] tbl 數據表
// country 國家名
// filename 圖像的文件名
//
void addimagerow(datatable tbl, string name, string filename)
{
filestream fs = new filestream(filename, filemode.open); // 創建文件流
binaryreader br = new binaryreader(fs); // 創建二進制讀取器
datarow row;

// 創建一個新的數據行
row = tbl.newrow();

// 設置 country 字段和 image 字段
row[0] = name;
row[1] = br.readbytes((int)br.basestream.length);

// 將數據行添加到表中
tbl.rows.add(row);

// 清除
br = null;
fs = null;
}

// 函數: createdata
// 創建數據集,包含一個表,表有兩個字段:country (string), 和 img (blob/byte[])
// 為表添加四條記錄
//
dataset createdata()
{
dataset data = new dataset();

// 將表 'images' 添加到數據集
data.tables.add("images");

// 添加兩個字段
data.tables[0].columns.add("country", system.type.gettype("system.string"));
data.tables[0].columns.add("img", system.type.gettype("system.byte[]"));

// 創建數據集模式(該模式用于設計報表)
// 報表創建以后,不再需要模式文件
//data.writexmlschema(directory.getcurrentdirectory() + "//dynamicimage.xsd");

// 添加四行
addimagerow(data.tables[0], "usa", directory.getcurrentdirectory() + "//usa.jpg");
addimagerow(data.tables[0], "canada", directory.getcurrentdirectory() + "//canada.jpg");
addimagerow(data.tables[0], "germany", directory.getcurrentdirectory() + "//germany.jpg");
addimagerow(data.tables[0], "japan", directory.getcurrentdirectory() + "//japan.jpg");

return (data);
}

// 過程: createreport
// 創建報表,并傳遞數據集
//
void createreport()
{
// 創建報表
crystalreport1 cr = new crystalreport1();

// 將數據集(通過調用函數 createdata 創建的)傳遞到子報表 "flags"
cr.opensubreport("flags").setdatasource(createdata());

// 將報表文檔傳遞到查看器
crystalreportviewer1.reportsource = cr;
}

public form1()
{
//
// required for windows form designer support
//
initializecomponent();

//
// todo: add any constructor code after initializecomponent call
//
createreport();
}

后面的部分省略……

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定陶县| 保靖县| 辉县市| 封丘县| 宁远县| 于都县| 亳州市| 恩平市| 辉县市| 昌乐县| 尉犁县| 禄劝| 台前县| 定西市| 承德市| 宣汉县| 来凤县| 墨玉县| 广河县| 丰顺县| 清徐县| 略阳县| 黄骅市| 鹿泉市| 两当县| 东乌珠穆沁旗| 城步| 新巴尔虎左旗| 军事| 淮北市| 惠州市| 东辽县| 大荔县| 定西市| 汝城县| 珲春市| 宁南县| 敖汉旗| 五寨县| 边坝县| 敖汉旗|