在前文《動態水晶報表:任意表,任意列,以及動態格線
》中,有乙個地方還沒有完全實現。就是根據內容自動調整表頭的列,跟內容**相對應。
我們也注意到了,在前文中,後面的列之所以不顯示,不是因為它們沒有了,它們是存在的,只是內容是空(''),注意是空,不是空格。
依此延伸開來,表頭也可以用此原理來實現。
本文接上文,稍加改動
把原來的表頭刪除,放上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的動態報表,用起來還不錯,故也想弄乙個水表的東東。因為水表接觸時間不長,做的也不是很順手,用了我半個月的時間才弄個大概模樣,不當之處還請各...