動態水晶報表 任意表,任意列 之 動態格線實現

2021-05-23 06:53:15 字數 2706 閱讀 1203

在前文《動態水晶報表:任意表,任意列,以及動態格線

》中,有乙個地方還沒有完全實現。就是根據內容自動調整表頭的列,跟內容**相對應。

我們也注意到了,在前文中,後面的列之所以不顯示,不是因為它們沒有了,它們是存在的,只是內容是空(''),注意是空,不是空格。

依此延伸開來,表頭也可以用此原理來實現。

本文接上文,稍加改動

把原來的表頭刪除,放上6個引數字段,p1,p2...p6,都設定邊框。設定好與字段的對齊。

然後,改進一下窗體的**即可。

1using

system;

2using

system.collections.generic;

3using

system.componentmodel;

4using

system.data;

5using

system.text;

6using

system.windows.forms;

7using

crystaldecisions.shared;

8using

crystaldecisions.crystalreports.engine;

9using

crystaldecisions.windows.forms;

10using

system.data.oledb;

11namespace

dycrystalreportdemo

1219

20private

void

button1_click(

object

sender, eventargs e)

2131

32//

開啟資料庫連線

3334

datatable dt1 

=new

datatable();

35datatable dtx 

=new

datatable();

36oledbdataadapter da 

=new

oledbdataadapter();

37oledbconnection cn 

=new

oledbconnection(connstr);

3839

//開啟選擇的表(注意進行錯誤保護)

4041

//如果要實現任意列,只要更改此處的sql為具體的字段即可

42da 

=new

oledbdataadapter(

"select * from "+

tblname, cn);

43da.fill(dt1);

4445

//根據dtl獲得實際列數

46int

cols 

=dt1.columns.count;

4748

49//

處理ds1

50clsdycrystalreportcore xcore 

=new

clsdycrystalreportcore();

51dtx 

=xcore.dtx(dt1);

5253

reportdocument myreport 

=new

reportdocument();

54string

reportpath 

=system.threading.thread.getdomain().basedirectory +"

crystalreport1.rpt";

55myreport.load(reportpath);

5657

//繫結資料集,注意,乙個報表用乙個資料集。

5859

myreport.setdatasource(dtx);

6061

//設定引數,即表頭

62for

(inti =

1; i 

<=

6; i

++) 

6370

crystalreportviewer1.reportsource 

=myreport;

71//

crystalreportviewer1.refreshreport();72}

7374

private

void

form1_load(

object

sender, eventargs e)

7579

80private

void

crystalreportviewer1_load(

object

sender, eventargs e)

8184}85

}86不好意思,偷懶了,沒對齊。

稍加說明:

1: //根據dtl獲得實際列數

int cols = dt1.columns.count;

2: //設定引數,即表頭

for (int i = 1; i <= 6; i++)

3://crystalreportviewer1.refreshreport();

這個要注意,這裡注釋掉了,因為每次重新整理的時候,引數視窗會重新彈出來。

所以要使用引數功能的話,盡量把*******上的重新整理按鈕禁止掉。防止出問題。

動態水晶報表 任意表,任意列 之 動態格線實現

在前文 動態水晶報表 任意表,任意列,以及動態格線 中,有乙個地方還沒有完全實現。就是根據內容自動調整表頭的列,跟內容 相對應。我們也注意到了,在前文中,後面的列之所以不顯示,不是因為它們沒有了,它們是存在的,只是內容是空 注意是空,不是空格。依此延伸開來,表頭也可以用此原理來實現。本文接上文,稍加...

水晶報表顯示任意列並保持列寬總和不變

本文為實現在水晶報表中顯示任意列,並且無論顯示多少列,要保持列寬總和不變,即當顯示的列數比較少時,不能讓其 縮 在左側,而導致右側一片放空,就是要實現根據列數的多少讓其具有 自動拉伸 的效果。本文實現的效果是顯示3 8列,望能給各位起到一定的參考作用 因最多顯示8列,故先在模板放置8個字段物件 模板...

動態水晶報表的實現

實現基本功能的動態水晶報表 系統配置 vs2005 內嵌的水表 目的 我也是剛接觸.net不久,做專案過程中需要設計報表,可乙個個的做起來煩啊,原來做過乙個vb6的動態報表,用起來還不錯,故也想弄乙個水表的東東。因為水表接觸時間不長,做的也不是很順手,用了我半個月的時間才弄個大概模樣,不當之處還請各...