在企業日常工作中,經常會需要下面這種型別的樹狀報表,既展現時按照層級以樹形展現,如下圖:
報表左表頭按照層級分類,此時要求在第二列增加乙個行號,用來顯示該行的編號,如上圖,增加行號可以使用潤幹的row()函式,通過該函式能計算出當前行的行號,再減去表頭的固定行就能實現行號的展現,但此時發現乙個問題,由於左表頭的的單位層級並不固定,有的有**,有的有兩級,這樣就會產生一些空,在顯示上要求把這些空行隱藏掉,這樣會導致產生的行號並不是連續的,如上圖,第5行會給隱藏掉,導致生成的行號並不是連續的。
要想生成連續的行號,就要算出該行上方有多少個空行,然後用當前的行號減去這個空行數,就能生成正確的行號,在報表中可以通過潤幹報表的層次座標動態來判斷,但是由於層級的不確定導致該表示式編寫起來有一定難度,此時可通過潤幹的api來動態實現。
潤幹的ireport物件為報表計算後的結果物件,通過對該物件的靈活使用能很好實現這一問題。下面介紹下實現方法:
1、讀取報表模板
reportdefine rd = (reportdefine)reportutils.read(is);
//2、構建運算環境
context context = new context();
//3、計算報表,生成ireport
engine e = new engine( rd, context );
ireport ireport = e.calc();
int rownum=ireport.getrowcount();
int colnum=ireport.getcolcount();
int j=1;
for(int i=7;i<=rownum;i++){//上表頭有6個空行,從第7行開始迴圈
inormalcell cell1 = ireport.getcell(i, (short)3);
inormalcell cell2 = ireport.getcell(i, (short)2);//第2列為左表頭,第三列為行號
if(cell2.getrowhidden()==false){//迴圈判斷第2列單元格是否隱藏,從而設定行號
cell1.setvalue(j);
j++;
string rptname = "rpt_"+double.tostring(math.random());//用bean形式發布報表
request.setattribute(rptname,ireport);
這樣,通過該jsp展示報表,就能實現帶有隱藏行的樹狀報表生成連續行號,如下圖:
樹狀結構報表增加編號
在企業日常工作中,經常會需要下面這種型別的樹狀報表,既展現時按照層級以樹形展現,如下圖 報表左表頭按照層級分類,此時要求在第二列增加乙個行號,用來顯示該行的編號,如上圖,增加行號可以使用潤幹的row 函式,通過該函式能計算出當前行的行號,再減去表頭的固定行就能實現行號的展現,但此時發現乙個問題,由於...
GridView 下增加自動編號列
此處是用gridview自帶分頁 this.gridview1.pageindex this.gridview1.pagesize container.dataitemindex 1 下面是用aspnetpager分頁控制項的情況 this.pager1.currentpageindex 1 thi...
SAP報表上增加命令按鈕
如何在sap的報表上新增命令按鈕,並通過該按鈕實現一些特定的功能?首先,要在top 中定義相應物件 type pools icon.tables sscrfields.data functxt type smp dyntxt.selection screen function key 1.butto...