天天看點

jsp分頁标簽

noka tag是一套jsp标簽庫,內建了非常多的應用系統常用元件如樹形菜單、折疊菜單、頁籤等

noka tag裡面的dbgrid标簽用于生成一個資料顯示表格。此資料表包括分頁,按列排序,自帶選擇框等功能。目前DBGrid支援SQL Server,Oracle,MySQL,PostgreSQL,DB2五種資料庫海量資料分頁,其它為普通分頁。

該标簽在子表顯示時,當使用sql和class方式時為Ajax加載方式。

注:此标簽內建排序功能,是以不能在sql語句中使用排序的語句。

從6.0.1開始,DBGrid改為異步加載資料,加載資料的url為規則為:nk[dbgrid]db.ndbgrid,其中的[dbgrid]為dbgrid的實際ID值,如一個執行個體的id為da_id,則加載路徑為:nkda_iddb.ndbgrid,該路徑noka會自動識别,如果需要對該路徑作資源控制需要将處理放在noka攔截器之前。

導出到Excel的伺服器路徑為:outexcel[dbgrid].gridexcel

加載子表的伺服器路徑為:subgrid[dbgrid].sgr

jsp分頁标簽

<n:DBGrid

onfailure="NK_bbb"

onsuccess="NK_aaa"

outexcelall="true"

tableformAction="la.jsp"

    selectinput="true"

    pagesize="30"

    checkrecord="wabc"

    formatcell="org.test.T.fa(java.lang.String 開卡日期) as 開卡日期 "

    checkd="checkbox"

    title="測試表"

    id="nk_dbsdd"

     height="400"

    width="900"

    checkname="wors"

    checkvalue="0"

    descorasc="desc"

    compositor="a"

    sql="select *     from nk_sys_wordbook "

    isaintercept="true"

/>

<script  type="text/javascript">

function aa(v){

alert(v.cells(1).innerHTML);

}

</script> 

裡面的org.ak.T.sc是一個位于org.ak下面的名為T的java類。sc表示該類的方。

法。對應的T類源碼是樣的。需要注意的是這裡方法的參數隻能是String類型。

package org.ak;

public class T {

public String sc(String  id,String a){

return id+":"+a;

}

}

Formatcell:可用類型有:

java.lang.String

java.lang.Integer

java.lang.Double

javax.servlet.http.HttpServletRequest

如這樣一條sql 語句 tname like ‘%value%’and tsex =’1’

在noka裡是這樣的: tname like ‘%$[tnames,名字,text,dd]%’|#[ano,and^并且!or^或者]# tsex=’$[tesx,性别,list,1^男!2^女]’

這樣會在界面成一個錄入框 一個條件選擇框 和一個 性别下拉選框。

錄入框類型可選有:date生成一個可以選擇日期的錄入框,如果在該類型設定值為today,則系統會自動以目前日期填充。datetime帶日期和時間錄入框,time時間錄入框。

list 生成一個下拉選框,text生成一個普通的錄入框。

button生成一個包括與name同名的隐藏控件,一個name_show的顯示控件以及一個button按鈕,該類型沒有初始值選項,初始值位置為button調用的方法名,該方法有兩個參數,第一個為隐藏控件的id,第二個為顯示控件件的id,寫法如:aaa=’$[aa_n,公司名,button,af’]

其中af為js方法名,形如function af(a,b);傳給背景的值為隐藏控件的值,這裡的a為隐藏控件的id,b為顯示控件的id。

當查詢表單需要換行時,在需要換行的地方加上$n($n兩端需要有一個空格)便可實作換行。

Ø皮膚配置

皮膚配置位于noka-config.xml檔案的dbgrid塊。Dbgrid中的id為JSP頁面上指定的styleid值。

<dbgrid  id="1">

<![CDATA[

body,div,tr,td,table{

    font-size:12px;

    }

    .nk_select_div{

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

        border-right: solid 1px #ccc;

        border-bottom: solid 1px #ccc;

        position:relative;

        width:600px;

    }

    .nk_dbgrid_div{

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

        border-right: solid 1px #ccc;

        border-bottom: solid 1px #ccc;

        position:relative;

    }

    .nk_title_div{

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

        border-right: solid 1px #ccc;

        z-index: 100;

        margin: 0;

        overflow:hidden;

        position:relative;

    }

    .nk_head_div{

        background: none repeat scroll 0 0 #8F8F9A;

    border-spacing:  1px;

    margin:  0;

    overflow:  hidden;

         white-space:nowrap;word-break:keep-all;word-wrap:normal;

         position:relative;

    }

    .nk_body_div{

        overflow:auto;

        background:  none repeat scroll 0 0 #8F8F9A;

    border-spacing:  1px;

    margin:  0;

         white-space:nowrap;word-break:keep-all;word-wrap:normal;

         position:relative;

    }

    .nk_bottom_div{

        overflow:hidden;

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

        border-right: solid 1px #ccc;

    }

    .nk_title_table{

        background-color: #ccc;

        padding: 0;

        margin:0px

    }

    .nk_head_table{

        background-color: #ccc;

        padding: 0;

        word-break:break-all;

        margin:0px;

    }

    .nk_data_table{

        background-color: #ccc;

        word-break:break-all;

        padding: 0;

        margin:0px;

    }

    .nk_bottom_table{

        background-color: #ccc;

        padding: 0;

    }

    .nk_title{

         background:  url('${rootpath}/nokatag/tablegrid/images/hrow.gif') repeat-x;

         background-color:  #FFFFFF;

         height:24px;

         overflow:hidden;

         word-break:break-all;

    }

    .nk_head{

         background:  url('${rootpath}/nokatag/tablegrid/images/hrow.gif') repeat-x;

         background-color:  #FFFFFF;

         height:24px;

         font-size: 12px;

         word-break:break-all;

         padding: 0;

         text-align: left;

    }

    .data_cell_0{

         background-color:  #FFFFFF;

         height:24px;

         font-size: 12px;

         word-break:break-all;

         padding: 0;

     }

    .data_cell_1{

         background-color:  #FFBBFF;

         height:24px;

         font-size: 12px;

         word-break:break-all;

         padding: 0;

         overflow:hidden;

     }

     .data_row_1{

         background-color:  #AAABFF;

         height:24px;

         width: 0px;

         font-size: 12px;

         word-break:break-all;

         padding: 0;

     }

     .data_row_2{

         background-color:  #FFFFFF;

         height:24px;

         width: 0px;

         font-size: 12px;

         word-break:break-all;

         padding: 0;

     }

     .nk_page_cell_1{

        background-color: #FFFFFF;

        cursor: default;

        height:24px;

        background: url('${rootpath}/nokatag/tablegrid/images/hrow.gif')  repeat-x;

     }

     .images_date{

        border: 0;cursor: pointer;width: 16px;height: 19px;

        margin-right:-3px;

        vertical-align:-5px;

        vertical-align:middle;

     }

     .nk_sub_images{

        border: 0;cursor: pointer;width: 16px;height: 16px;

        margin-right:-3px;

        vertical-align:-4px;

     }

     .nk_images_but{

        border: 0;cursor: pointer;width: 16px;height: 16px;

        margin-right:0px;

        vertical-align:-4px;

        border:1px solid #333333;

     }

     .nk_asc_desc_images{

        border: 0;cursor: pointer;width: 8px;height: 4px;

        margin-right:0px;

        vertical-align:0px;

     }

     .nk_cell_menu{

        z-index: 999999;

     }

     .nk_table_menu{

        background-color: #FFFFFF;

        border-bottom: solid 1px #ccc;

     }

     .nk_menu_td_1{

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

     }

     .nk_menu_td_2{

        border-top: solid 1px #ccc;

        border-right: solid 1px #ccc;

     }

     .nk_input_check{

        margin-right:-2px;

        vertical-align:-2px;

     }

     .nk_sub_td{

        word-break:break-all;

        padding: 0;

        background-color: #FFFFFF;

        border-top: solid 1px #ccc;

        border-left: solid 1px #ccc;

        border-right: solid 1px #ccc;

     }

     .select_button{

     }

     .select_input{

       border: 1px solid  #AFAFAF;

       height:19px;

       vertical-align:middle;

     }]]>

</dbgrid>

子表樣式

<subgrid id="1">

<![CDATA[

你好啊名字:${0}

]]>

</subgrid>

關于子表的應用說明如下:

1、直接顯示主表某幾列時,需要設定subtable="2,3"和subtabletype="cell"兩個屬性,其中subtable屬性為主表的列順序号,多個列用逗号分隔,subtabletype這裡設為cell表示直接取主表列。當需要自定義樣式時,需要設定subtablestyleid,該屬性的值為noka-config.xml中的subgrid的id值。Subgrid裡面的用${1}來應用主表列,其中1表示主表列序列号,從0開始。功能列(如選擇、序号、子表)列不作為序列号計算。

 2、sql方式加載時需要同時設定subtable="select * fromnk_sys_wordbook where wid=?"、subtabletype="sql"、subtablestyleid="0"三個屬性,此時的subformatcell可用于格式化子表的資料,使用方法同主表的formatcell。在sql模式下,subtable為sql語句,參數以?号代替,subtablestyleid為要應用給sql參數的主表列序列号,從0開始。

3、自定義方法加載子表,繼承于org.nokatag.dbgrid.SubGrid接口執行個體

public class TestGrid  implements SubGrid {

 public String getBody(Integer i,  Map<String, Object> map,List<String> Cellname) {

String datarow="";

Integer row=i;//行号

//---------取得行所有資料------------------------ 

Iterator it =  map.entrySet().iterator();

while (it.hasNext()) {

Map.Entry entry = (Map.Entry)  it.next();

String key =  entry.getKey().toString();//列名

String value =  entry.getValue().toString();//值

datarow+=key+"="+value+",";

 }

///--------取得所有列名------------

for(String cell:Cellname){

datarow+=","+cell;

}

String sn="獲得資料:"+datarow;

return sn;

}

此時需要設定subtable="org.noka.function.TestGrid"和subtabletype="class"兩個屬性,其中subtable為自定義類。

關于ajax資料操作說明,該标簽會自動生一個外部重新整理資料的javascript方法,其方法名為:标簽的ID_reLoadData,如标簽ID為noka,則該方法為noka__reLoadData,不需要任何參數,調用該方法,既可重新整理資料,注意,該方法将重置分頁、排序兩個屬性為初始狀态。

在onsuccess和onfailure屬性均不為空的情況下,該标簽會自動生成一個名為: 标簽的ID_ajaxSubmitDataForm方法,可調用該方法送出dbGrid裡面的表單到伺服器,根據傳回狀态自動調用onsuccess和onfailure裡面的方法,注意,該方法隻能送出資料表單,不包括查詢表單和分頁表單。

輕按兩下和單擊方法的使用具有相同的參數傳入,以下是方法執行個體:

function detail(v){

//i為該行的列号,從0開始,該方法用于取出輕按兩下或單擊行的某個單元格資料

alert($(v.cells[i].id+'_div').innerHTML);

}

 詳細内容在noka tag手冊裡面說明比較多

noka tag首頁http://www.97521.com(該首頁位于sourceforge.net上,國内需要翻牆才能通路)