阿泰,水晶報表 掌控物件

2021-06-02 13:44:49 字數 3505 閱讀 7056

1.物件的操作

開始之前

先說一下,操作物件,是依靠reportdocument,

基礎**如下:

c# code

reportdocument myreport 

=new

reportdocument();

string

reportpath ="

crystalreport1.rpt");

myreport.load(reportpath);

//pull或push方式的資料處理

//...

crystalreportviewer1.reportsource

=myreport;

//然後,才是下文中的**

關於水晶報表裡的物件,我們直觀的來看一下。

在模板空白處點郵件,選「插入」,滑鼠放到「特殊字段」上,不要點,會出現如下選單。

上面這些,都是報表物件或說是報表部件。恩,這些我們都可以進行控制。

操作的基本語法是:

c# code

myreport.reportdefinition.reportobjects[物件序號].方法或屬性;//或

myreport.reportdefinition.reportobjects[物件名稱].方法或屬性;

物件序號在 .net的水晶報表版本裡很難直觀的看出來,一般他是按加入報表的順序來排的

這個很難去記住。有時候為了一些需要,在遍歷的時候會用的到。

一般我們會用

名稱。在物件上點右鍵,設定物件格式,

在出來的介面上就可以看到物件的名稱

reportobjects就是我們前面所指的報表物件集合,單一物件就是乙個reportobject

對於reportobject來說,通用的屬性有這樣一些

一般我們可以控制物件的位置,通過控制左上角的座標,也就是top和left屬性。

這裡說一下水晶報表的座標系和計量單位。

水晶報表的座標系,以每個節的左上角為原點,往下往右兩個方向遞增延展。

計量單位是緹,與厘公尺的換算關係是:1厘公尺=567緹

所以在後面的**中,你會看到我有這樣的寫法: 567*n 其實也就是n厘公尺。

另外還有

objectformat下面的屬性,可以控制物件的隱藏與顯示,這個很實用吧,呵呵。

如抑制顯示可以這樣操作:

c# code

myreport.reportdefinition.reportobjects(

"text4

").objectformat.enablesuppress

=true

;

reportobject是個通用物件,而其實際上又是乙個具體的物件。他有各自的特殊屬性。

以文字框為例,他就會多出一些特性,比如text屬性,這樣我們可以修改到文字框的內容。

具體操作如下:

c# code

//

更改乙個文字框的內容

textobject x;x =

(textobject)myreport.reportdefinition.reportobjects[

"text4"];

x.text ="

我們的世界";

另外說一下,前面沒提到的

資料字段,也可以這樣操作。

c# code

//

調整欄位的位置

fieldobject fo;

fo =

(fieldobject)myreport.reportdefinition.reportobjects[

"name1"];

fo.height

=567*3

;fo.width

=567*4

;fo.left

=567*1

;

每個物件都有各自不同的屬性,至於具體有多少物件,你可以按一下f2,

在crystaldecisions.crystalreports.engine這個命名空間下,以

object結尾的,基本都是。

2:子報表裡物件的操作

子報表裡的物件操作跟主報表是一樣的,主要是要先找到這個子報表物件。

下面這個方法是不對的

c# code

subreportobject subobj;

subobj

=(subreportobject)myreport.reportdefinition.reportobjects[

"subreport1"];

這個只會定義子報表在主報表內的特性,不能設定到子報表內的部件

要這樣c# code

myreport.subreports[子報表序號].reportdefinition.reportobjects["xx

"];//序號從0開始計數,單純子報表的乙個序號//或

myreport.subreports[子報表名稱].reportdefinition.reportobjects["xx

"];

注意這個名稱不是我們在子報表上點右鍵看到的名稱,而是我們在設計子報表時指定的子報表名稱

c# code

textobject subtext;

subtext

=(textobject)myreport.subreports[

"xyz

"].reportdefinition.reportobjects[

"text3"];

subtext.text ="

我是子報表裡的內容哦";

3:引數的基本操作

引數是程式與報表互動的乙個重要媒介,本節只做乙個基礎說明,後續的章節中會進一步介紹。

新建乙個引數p1

拖到模板上,會自動顯示為 ?pa1

**中傳遞引數給報表的**為:

setparametervalue 後面的幾個引數依次為:引數名稱,引數值,子報表名稱(如果是子報表引數的話)。

c# code

myreport.setparametervalue(

"pa1",

"我是乙個引數");

在子報表中建立乙個新的引數spa1,注意xyz是子報表名稱

c# code

myreport.setparametervalue(

"spa1",

"我是乙個引數",

"xyz");

當然,引數也可以傳遞給crystalreportviewer,這裡就不展開說了,用到的時候再說。

單純從這個**上來看,textbox和引數似乎可以等價

但是textbox一般只能用於顯示乙個字串,但是引數則可以參與公式,過濾資料,控制物件的一些特性等等,用途更廣泛一些。

好了,就到這裡。這個基本上沒有什麼需要特別注意的。

阿泰,水晶報表 pull模式樣板

在前一篇中,講解了pull和push模式的區別。本節中主要是從無到有地講解一下如何使用pull模式來做乙個報表。因本文主要針對初學者,所以每個步驟都抓了圖。以 web應用為例 首先,新建乙個asp.net crystalreports站點 稍等一會後會出來乙個預設的水晶報表嚮導 確定後,選擇 建立新...

水晶報表內功心法 信手拈來,掌控物件

月初一如既往地忙碌,竟然一點時間也沒抽出來。週末也是一如既往地加班了,好在事情進展地還算順利,終於有時間寫這一篇。本來的計畫是 掌控於股掌之間 中傳引數 傳公式 操作水晶報表裡的所有物件 考慮到公式的重要性,會單獨寫一篇,於是本篇的內容就是引數與物件的控制 而引數的部分,在本篇也是基本操作,後續的高...

水晶報表內功心法 信手拈來,掌控物件

月初一如既往地忙碌,竟然一點時間也沒抽出來。週末也是一如既往地加班了,好在事情進展地還算順利,終於有時間寫這一篇。本來的計畫是 掌控於股掌之間 中傳引數 傳公式 操作水晶報表裡的所有物件 考慮到公式的重要性,會單獨寫一篇,於是本篇的內容就是引數與物件的控制 而引數的部分,在本篇也是基本操作,後續的高...