JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » AJAX討論區 » ZK  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by CMHuang at 2006-12-26 16:38
本主題所含的標籤
無標籤
作者 我的web erp分享,使用zk! [精華]
peterpai

peterpai



發文: 103
積分: 1
於 2006-12-26 15:54 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
基本上這個案子是透過web介面讓使用者開立erp的自製報表,erp系統是原有的。

別的部份我都省略不提了,就先看基本操作介面如何實作,在這個網站學習了很多,希望也能有一點貢獻。

首先是index.zul 這裡區分為左上部 樹狀的程式列表,左下部 程式說明以及右部的程式操作介面。
長得像這樣

然後,就很一般的,使用者從左上的樹狀程式裡點選程式後,右側就會出現該程式的頁面。
我只換皮而已! 也就是說介面是ajax的,不過還是透過submit post到我原本處理的servlet。所以整體改頭換面所花的執行時間並不多……

接下來分享一下我index.zul的程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<window id ="main" onCreate="buildTrees()">
<hbox spacing="0" width="10%">
  <vbox height="300px">
<!-- 左上 程式列表  -->  
  <groupbox mold="3d" width="300px" 
  style="margin-left:auto;margin-right:auto;margin-top:auto"> 
  <caption label="Prog List"/>  
  <tree id="treesegwiserep" height="auto" width="auto">  
  <treecols>  
  <treecol label="程式名稱"/>  
  <treecol label="程式代號"/>  
  </treecols>  
  <treechildren id="branch">  
  </treechildren>
  <attribute name="onSelect">
    <!-- new Button(self.getSelectedItem().getId()).setParent(main); -->
    linkPage(self.getSelectedItem().getId());
  </attribute>  
  </tree>  
  </groupbox>  
<!-- 左下 狀態欄  -->  
  <splitter collapse="before"/>
  <include id="include_2" src="/help.zul"/>
  </vbox>
<!-- 右 程式頁面  -->  
  <splitter collapse="before"/>
  <include id="include_3" src="/prog.zul"/>
</hbox>
 
<zscript><![CDATA[  
import com.erp.model.*;
//產生程式列表
void buildTrees() {  
 
//0:程式代號、id、執行頁面.zul 1:程式說明 3:父件代號,沒有則是最上階
/*
branchvar = new String[][] {{"_ap", "新增專案",""},{"_mp", "修改專案",""},{"_qp", "查詢專案",""},{"_cp", "變更專案",""},
{"_op", "審核專案",""},{"_aaaaaaa", "a程式代號",""}, {"_baaaaaa", "b程式代號",""},{"faaaaaa", "f程式代號",""}, 
{"caaaaaa", "c程式代號字太多太多太多太多會怎樣","_aaaaaaa"}, {"daaaaaa", "d程式代號","_baaaaaa"},{"eaaaaaa", "e程式代號","daaaaaa"},
{"gaaaaaa", "g程式代號","_baaaaaa"},{"haaaaaa", "h程式代號","daaaaaa"},{"iaaaaaa", "i程式代號","haaaaaa"},
{"jaaaaaa", "j程式代號","iaaaaaa"},{"Purw010", "採購調價績效報表","iaaaaaa"}}; 
*/
ProgTree pt = new ProgTree();
String[][] branchvar = pt.treeList();
 for (int i=0;i<branchvar.length;i++) {  
  if(!(branchvar[i][0]==null)){
  Treeitem item = new Treeitem(); 
  if(branchvar[i][2]==null || branchvar[i][2].equals("")){
    item.setId(branchvar[i][0]);
    item.setParent(branch);
    Treerow row = new Treerow(); 
    row.setParent(item);  
    Treecell cell = new Treecell(branchvar[i][1]);  
    cell.setParent(item.getTreerow());  
    if(!branchvar[i][0].substring(0,1).equals("_")){//id字首為"_"的不寫代碼
      cell = new Treecell(branchvar[i][0]);  
      cell.setParent(item.getTreerow());  
    } 
 
   }else {
   //沒有treechildren 則產生,有則不必
     if(branch.getFellowIfAny(branchvar[i][2]+"children")==null){
       //沒有則產生treechildren物件
       Treechildren tc = new Treechildren();
       tc.setId(branchvar[i][2]+"children");
       tc.setParent(branch.getFellow(branchvar[i][2]));//粘到item上
     }
 
       item.setId(branchvar[i][0]);
       item.setParent(branch.getFellow(branchvar[i][2]).getFellow(branchvar[i][2]+"children"));       
      Treerow row = new Treerow(); 
      row.setParent(branch.getFellow(branchvar[i][2]).getFellow(branchvar[i][2]+"children").getFellow(branchvar[i][0]));  
      Treecell cell = new Treecell(branchvar[i][1]);  
      cell.setParent(item.getTreerow());   
      if(!branchvar[i][0].substring(0,1).equals("_")){//id字首為"_"的不寫代碼
        cell = new Treecell(branchvar[i][0]);  
        cell.setParent(item.getTreerow());  
      } 
       }
  }
 }
}
//更換頁面
void linkPage(String fileName){
  if(!fileName.substring(0,1).equals("_")){//id字首為"_"的不開連結
    fileName+=".zul";
    include_3.setSrc("/WEB-INF/zk/"+fileName);
    include_2.setSrc("/WEB-INF/zkhelp/"+fileName);
  }  
}
]]></zscript>  
<zscript><![CDATA[ 
//取得使用者權限,並放入session中,以讓各程式檢查是否有權限
import com.erp.model.* ;
import java.util.* ;
  UserPower up=new UserPower();  
  String[][] prog=up.userPower((String)session.getAttribute("userID"));
  Collection  prog_list=new ArrayList();
  
  for(int i=0;i<prog.length;i++){
    if( ! ( prog[ i][0]==null) ){
      prog_list.add(prog[i][0].trim());
    }
  }
  session.setAttribute("prog_list",prog_list);
]]></zscript>
 
</window>

buildTrees() 是我用來做樹狀列表的,會抓資料庫裡的資料來建樹。資料的方式就看我程式裡有註解的地方 branchvar 是也。
另外有幾個要注意的地方,我也向大家報告一下。
zk 的tree沒有onClick的事件,只有onSelect,所以程式裡再用linkPage(self.getSelectedItem().getId());來找出是誰被使用者選到。再叫linkPage(String fileName)去換頁面。
理論上我應該把zscript全趕出這個zul,不過我不知道要如何在使用<![CDATA[ ..............]]> 的情況下將zscript存在.bs檔再引用…所以就沒切了。
以上,就這樣,應該差不多了。 透過一點小小的改變就可以讓您的web application更美麗喔!何樂而不為呢? 當然您要是原本就做的很美麗就不太需要了! Smile 看看我之前的頁面
應該會覺得美多了吧!!

(縮略圖,點擊圖片鏈接看原圖)


kebin_liu edited on 2006-12-26 17:33
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
CMHuang

妳喜歡我的大象嗎?(羞)

版主

發文: 81
積分: 4
於 2006-12-26 17:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感謝分享。
介面的確變得超漂亮,也更人性化了。 Big Smile


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-03 14:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不好意思想請問一個問題
我使用一個Grid來list資料(部門資料)
要如何做到點選後改列出此部門底下的部門資料?


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-04 07:57 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
TO:版主
感謝您的支持,被納入精華小弟高興了很久! Smile

TO:james0714
我看了一下Grid,我不知道您想要的功能是什麼?部門的資料有哪些?外觀想長的像什麼樣子?能用簡單的圖畫表示一下嗎?不知道能不能多描述一點? Smile


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-04 09:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你好~~感謝你有興趣
部門資料有部門編號、部門名稱、上級單位編號
此Grid欄位最主要只顯示部門名稱
在onCreate時列出最上層部門及其下的單位(Ex:總公司及向下一層單位)
而點選部門名稱後 此Grid的根目錄切換至所點選的單位
資料的列表則切換至點選單位之下一層的單位

Ex:
總公司
A單位
B單位
點選A單位後Grid切換至
A單位
單位1
單位2


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-04 23:17 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
public class Grid
extends XulElement

A grid is an element that contains both rows and columns elements. It is used to create a grid of elements. Both the rows and columns are displayed at once although only one will typically contain content, while the other may provide size information.

很抱歉,我真的有花時間想了解您的意思,不過我還是不了解……
如我上面貼的api裡的說明,Grid就是一個容器吧!裡面放東西…我怎麼想也不知道和選取、切換、資料列表有什麼關係…… 抱歉,我不知道該怎麼辦? 我想比較有可能的是您誤解了Grid或我誤解了Grid……小弟英文不佳… Smile

如果不指定元件的話,如果是我做的話,可以用別的方法解決!
用Combobox如何?
Combobox is a special text box that allows user to select the text from a list of combobox items. Press Alt+DOWN to drop the list, then use UP and DOWN to select an item.
您可以去zk的live demo試一下,如果看起來像,那再去看一下api
正好我今天寫程式有用到這個元件,裡面可以移除comboitem (removeItemAt(int index) )
所以應該可以用一個Combobox解決您的問題,開始時先將第一次要放入的comboitem加入,然後用onChanged()事件去呼叫自已寫的method。這個方法用self.getValue取得目前Combobox的值,看是誰被點選到了,然後根據這個值再去db抓它的下階部門,再清光原有的Comboitem,再加入從db裡抓回來的資料變成Comboitem再附到Combobox中。這樣可行嗎?

再了不起一點,zk demo裡的Combobox還可以加入image 看是不是把各部門主管拍個大頭貼,然後秀出來…… Smile 唉! 這樣寫程式真的是佛心來著啊! Smile

try try看吧! 寫了這麼些東西我也還不知道是不是您想要的,有什麼進展別忘了通知小弟一下! Smile


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-05 02:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
非常感謝您這麼豐富的資料
由於是要維護部門資料
因此有必要將部門資料表列出來
如用Combobox做會顯得奇怪?
還是說介面上可以換種方式呈現...要思考一下
但還是脫離不了要get request吧...
這也是目前小弟最感到頭痛的...@@
不知道該如何取得Request...

至於Combobox要放上主管的大頭貼....
我看應該會常被用來練準度喔...Big Smile


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-05 11:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝...問題已找到方法解決
原本想使用zscript去抓requestScope的值但是抓不到
後來便想到利用一個hidden來抓值
再去onCreate事件抓hidden的值進來
雖然說是一個笨方法...
zhtml:
1
<x:textbox id="out" value="${param.abc}" style="display:none"/>

Grid class
1
2
Textbox out = (Textbox)this.getFellow("out");
String abc = out.getValue();


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-08 15:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不好意思我又碰到一個問題了...
當我include_3.setsrc之後
src頁跳至另一個畫面..
那在這個畫面裡要怎麼再呼叫include_3呢


james0714 edited on 2007-01-08 16:15
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-08 17:32 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
james0714 wrote:
不好意思我又碰到一個問題了...
當我include_3.setsrc之後
src頁跳至另一個畫面..
那在這個畫面裡要怎麼再呼叫include_3呢

Big Smile 嗯! 這件事我寫的時候就有想到,不過因為覺得想弄到您說的那個樣子我必需要多弄懂很多東西,我因為想先弄別的……,所以就……當作沒這回事了!Big Smile

因為小弟近來還滿多東西想弄的……如果方便,您研究出來可否教我一下哩?感恩啊!


peterpai edited on 2007-01-09 08:15
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-08 17:56 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
另外,有辦法讓樹一開始都不要展開嗎??
還有很多很多要加強的地方哩…… Smile


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-08 20:23 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
peterpai wrote:
另外,有辦法讓樹一開始都不要展開嗎??
還有很多很多要加強的地方哩…… Smile


我找到答案了…在treeitem 設open="false",如下是zk demo修改後的範例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<window title="tree demo" border="normal">
  <tree id="tree" width="90%" rows="5" Vflex="flase">
    <treecols sizable="true">
      <treecol label="Name"/>
      <treecol label="Description"/>
    </treecols>
    <treechildren>
      <treeitem open="false">
        <treerow>
          <treecell label="Item 1"/>
          <treecell label="Item 1 description"/>
        </treerow>
      </treeitem>
      <treeitem open="false">
        <treerow>
          <treecell label="Item 2"/>
          <treecell label="Item 2 description"/>
        </treerow>
        <treechildren>
          <treeitem open="false">
            <treerow>
              <treecell label="Item 2.1"/>
            </treerow>
            <treechildren>
              <treeitem>
                <treerow>
                  <treecell label="Item 2.1.1"/>
                </treerow>
              </treeitem>
              <treeitem>
                <treerow>
                  <treecell label="Item 2.1.2"/>
                </treerow>
              </treeitem>
            </treechildren>
          </treeitem>
          <treeitem>
            <treerow>
              <treecell label="Item 2.2"/>
              <treecell label="Item 2.2 is something who cares"/>
            </treerow>
          </treeitem>
        </treechildren>
      </treeitem>
      <treeitem label="Item 3"/>
    </treechildren>
  </tree>

我找得好辛苦……為什麼我會找的這麼辛苦……太笨嗎?
誰會知道用open啊?
我一直在找看有沒有像setShrink或setExpand的東西,而api裡連說明都和這幾個單字無關……

看一下api裡怎麼寫:

1
2
3
4
5
setOpen
 
public void setOpen(boolean open)
 
    Sets whether this container is open.

找得了我當然看得懂,問題是當初要怎麼知道怎麼找啊?
我是去zk sourceforge裡的help裡找到的……
我真的是搞不懂api……連j2se的也是……最近稍微的看了一下設計模式的東西,j2se裡也用了不少設計模式吧,如果不懂設計模式,我看也很難體會那些api吧…


peterpai edited on 2007-01-09 08:10
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-09 09:18 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
peterpai wrote:
Big Smile 嗯! 這件事我寫的時候就有想到,不過因為覺得想弄到您說的那個樣子我必需要多弄懂很多東西,我因為想先弄別的……,所以就……當作沒這回事了!Big Smile

因為小弟近來還滿多東西想弄的……如果方便,您研究出來可否教我一下哩?感恩啊!

蝦米Shock....那是說都沒用到換頁來做囉...對一個系統來說...真是厲害...
原本想使用getPage()跟getFellow()來抓卻發現..為什麼都找不到include_3?
連getRoot()都沒有Sad


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-09 12:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這次我用use-class的方式來create
又碰到了另一個問題...
Button 的 zk:onClick 要怎麼新增進去?
Button.setAction(String) 的對象是什麼?
一直跟我說Unknown Action.....
真的是處處碰壁....不曉得大大到底在功能的地方是怎麼做的@@


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-09 17:41 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
james0714 wrote:
這次我用use-class的方式來create
又碰到了另一個問題...
Button 的 zk:onClick 要怎麼新增進去?
Button.setAction(String) 的對象是什麼?
一直跟我說Unknown Action.....
真的是處處碰壁....不曉得大大到底在功能的地方是怎麼做的@@

不好意思,我還是看不懂您的問題,不過您要有耐心啦! 看您之前參與的討論,我覺得您比我厲害多了!

我貼一下我執行報表的程式碼,也就是程式樹狀列表會引用到實際可以操作的開報表的程式。

看起來會有點怪,那是因為我只換了皮,所以丟出的東西要和原本接收的servlet配合。

這個程式主要只是丟出標準成本組、起迄日期及是否以驗收日期為主,然後交由servlet處理。

看看能否供您參考吧!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<window xmlns:h="http://www.w3.org/1999/xhtml" id="win"
  title="Purw010 採購調價績效報表" border="normal" width="600px">
  <h:form method="post" action="purw010.do">
    <zscript>
      import java.io.*; import com.erp.model.*;
 
    </zscript>
    <zscript>
      <![CDATA[ 
//寫log檔
private static final String PROG_ID = "purw010";
String userID = (String)session.getAttribute("userID");
Log log = new Log();
String remoteAddress=(String)session.getAttribute("remoteAddress");
log.insertLog(userID, PROG_ID,Now.getDate(),Now.getTime(), remoteAddress);
 
boolean vis = false;
//再次驗證使用者是否有此程式之權限
  ArrayList prog_list = (ArrayList) session.getAttribute("prog_list");       
      //如果有權,就執行
      if ((!(prog_list == null)) && prog_list.contains(PROG_ID)) {
      //if(false){//測試用,假設使用者無權限
    vis=true;
      } else {
        vis=false;
         Include ic_1=new Include("/noPower.zul");
         ic_1.setId("ic_1");
         ic_1.setParent(win);
         
      }
]]>
    </zscript>
 
    <zscript>
      //取得成本組 import com.erp.model.CostNo; CostNo costNo = new
      CostNo(); cost = costNo.getCostNo();
    </zscript>
    <grid width="600px" visible="${vis}">
      <rows>
        <row>
          1、請選擇標準成本組
          <combobox name="rd_no" id="rd_no" autodrop="true" />
        </row>
        <zscript>
          <![CDATA[ 
  //取得成本組
    for(int j=0; j < cost.size(); j++) {
      rd_no.appendItem((String)cost.get(j));
    }
  ]]>
        </zscript>
        <row>
          2、請選擇起始範圍
          <calendar id="cal1"
            onChange="startPOyear.value = cal1.value;startPOmonth.value=cal1.value;endPOyear.value = cal1.value;endPOmonth.value=cal1.value" />
          <datebox name="startPOyear" id="startPOyear"
            format="yy" />
          <datebox name="startPOmonth" id="startPOmonth"
            format="MM" />
        </row>
        <row>
          3、請選擇結束範圍
          <calendar id="cal2"
            onChange="endPOyear.value = cal2.value;endPOmonth.value=cal2.value" />
          <datebox name="endPOyear" id="endPOyear"
            format="yy" />
          <datebox name="endPOmonth" id="endPOmonth"
            format="MM" />
        </row>
        <row>
          4、計算基準
          <checkbox id="isCK" name="isCK" label="以驗收日期為準 " />
          <label />
          <label />
        </row>
        <row>
          5、送出資料開立報表
          <h:input type="submit" value="送出" />
        </row>
      </rows>
 
    </grid>
 
  </h:form>
</window>


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-09 18:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
看了您以上的程式碼之後
有個問題想請教您
送出之後整個畫面換掉?
那看過報表之後要回系統怎麼辦?

另外...假設
1
2
3
<x:window title="功能項目內容" border="normal" id="smrWindow">
    <x:grid id="ItemGrid" use="com.ujd.events.ItemDetailGrid">
...

我在zscript裡要怎麼呼叫到ItemGrid?
抓的到smrWindow....

完整的dom架構..卻不知道要怎麼抓..Dead


james0714 edited on 2007-01-09 19:40
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-09 19:27 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Smile
您看的真認真!

不過,整過畫面都不會有變化喔!還是保持原本的樣子!
zk做的是v的部份,c交給servlet,m就是一般的java透過jdbc連資料庫。

我的報表都是以excel方式回傳!使用者下載就可使用!

過一陣子再改成圖表吧! 本來想用birt,不過由於我的資料庫特殊一些,使用上有問題。
看了zk提供的圖表,我覺得也很好啊,過一陣子再來加強囉!

還有,我這的使用者沒啥需求,我都自已做爽的……
我本來主要的工作是導erp的,不過,上線之後就沒事到現在……
任職三年,導一年,沒事幹二年…就找事情自娛了…

我覺得zk真是個好東西,它讓我不用再碰html了!
不知道為什麼,我對html很頭痛,基本上我連學都不想學……jsp也是,不過是想學覺得太麻煩,所以這兩種我都處於不會使用的狀態…之前看到有人介紹wicket,也讓我很興奮,不過現在我想zk對我而言也夠了吧!

(之前我view的部份也都是用servlet做!)

貼一下servlet的部份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.erp.controller;
 
//採購調價績效報表 
 
import java.io.*;
 
import java.io.IOException;
 
import java.util.ArrayList;
 
import javax.servlet.ServletContext;
 
import javax.servlet.ServletException;
 
import javax.servlet.http.*;
 
import javax.servlet.http.HttpServlet;
 
import com.erp.model.CostNo;
 
import com.erp.model.Now;
 
import com.erp.model.pur.DbPurw010;
 
import com.erp.pojo.makeExcel;
 
public class Purw010 extends HttpServlet {
 
  private static final String PROG_ID = "purw010";
 
  protected void doGet(HttpServletRequest request,
 
          HttpServletResponse response) throws ServletException, IOException {
 
      //顯示表單
 
      response.setContentType("text/html;charset=big5");
 
      PrintWriter out = response.getWriter();
 
      out.println("<html><head><title>" + PROG_ID + "</title></head><body>");
 
      out.println("<h2><center>採購調價績效報表</center></h2></font>");
 
      out.println("<h3>凱健之單價已調回原採購價格</h3></font>");
 
      
 
      //再次驗證使用者是否有此程式之權限
 
      HttpSession session = request.getSession();
 
      ArrayList prog_list = (ArrayList) session.getAttribute("prog_list");       
 
      //如果有權,就執行
 
      if ((!(prog_list == null)) && prog_list.contains(PROG_ID)) {
 
          ArrayList cost = null;
 
          out.println("<form action='purw010.do' method='post'>");
 
          out.println("1、請選擇標準成本組 <select name=\"rd_no\"></br>");
 
          
 
          CostNo costNo = new CostNo();
 
          cost = costNo.getCostNo();
 
          for (int i = 0; i < cost.size(); i++) {
 
              out.println("<option value=\"" + (String) cost.get(i) + "\">"
 
                      + (String) cost.get(i) + "</option>");
 
          }
 
          out.println("</select></br>");
 
          out.println("(如不知該如何選擇,請與財會蔡課長連絡#39)</br></br></br>");
 
          out.println("2、請輸入起始範圍</br>");
 
          out.println("<li>年<input type='text'name='startPOyear'></li>");
 
          out.println("(例如:2006年則輸入06)</br></br>");
 
          out.println("<li>月<input type='text'name='startPOmonth'></li>");
 
          out.println("(例如:5月則輸入05)</br></br>");
 
          out.println("3、請輸入截止範圍</br>");
 
          out.println("<li>年<input type='text'name='endPOyear'></li>");
 
          out.println("(例如:2006年則輸入06)</br></br>");
 
          out.println("<li>月 <input type='text'name='endPOmonth'></li>");
 
          out.println("(例如:5月則輸入05)</br></br>");
 
          
 
          out.println("如果您需要的是以驗收日期為準,請勾選方塊,否則報表會以採購開單日期進行統計</br></br>");
 
          out.println("<li>以驗收日期?<INPUT type='checkbox' name='isCK' value='isCK'></li>");
 
          
 
          out.println("<center><input type=submit value=\"送出\"></center>");
 
          out.println("<li><a href='index.jsp'>返回首頁</a></li>");
 
          out.println("</form></body></html>");
 
          out.close();
 
      } else {
 
          //無執行權限,返回首頁
 
          out.println("請返回首頁,由可使用程式列表後,重新執行!");
 
          out.println("<li><a href='index.jsp'>返回首頁</a></li>");
 
          out.println("</body></html>");
 
          out.close();
 
      }
 
  }
 
  protected void doPost(HttpServletRequest request,
 
          HttpServletResponse response) throws ServletException, IOException {
 
      
 
      boolean isCK=false;
 
      if("isCK".equalsIgnoreCase((String)request.getParameter("isCK"))){
 
          isCK=true;
 
      }
 
      DbPurw010 dbPurw010 = new DbPurw010();
 
      String[][] mrpCost = dbPurw010.getPURW010((String) request.getParameter("rd_no"),(String) request.getParameter("startPOyear"),(String) request.getParameter("startPOmonth"),(String) request.getParameter("endPOyear"),(String) request.getParameter("endPOmonth"),isCK);
 
      makeExcel me = new makeExcel();
 
      String fileName=PROG_ID+"_"+Now.getTimeFileName()+".xls";
 
      me.make(mrpCost,"C:\\Java\\EclipseApps\\weberp\\WebContent\\WEB-INF\\download\\"+fileName);
 
      response.setContentType("application/vnd.ms-excel");
 
      ServletContext ctx = getServletContext();
 
      InputStream is = ctx
 
              .getResourceAsStream("/WebContent/WEB-INF/download/"+fileName);
 
      
 
      int read = 0;
 
      byte[] bytes = new byte[10240];
 
      OutputStream os = response.getOutputStream();
 
      while ((read = is.read(bytes)) != -1) {
 
          os.write(bytes, 0, read);
 
      }
 
      os.flush();
 
      os.close();
 
  }
 
}

doGet(...) 裡放的是"view"
doPost(...)放的是controller
DbPurw010是pojo,連資料庫回傳結果mrpCost[][]
makeExcel是我寫的將查詢結果丟到excel裡的類別
最後用OutputStream讓使用者下載…

我大大的現醜了……這些東西沒別人看過……僅管很多連我自已都覺得不妥的地方,我都不堅持了……因為一個人做…也沒人可討論也沒人可問,有的問題我想上網站來問我都不知道該怎麼問。

所以,就這樣了,都給您看光光了!


peterpai edited on 2007-01-09 19:48
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-09 19:45 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
喔喔~~了解...poi也是難用...
現在碰到抓dom的東西又卡住了...
Dead

挖咧....用servlet做的話...
還是得碰到html.....

那zk的強大功能就浪費掉啦@@
目前我的作法都是繼承zul的物件來做
可是現在抓不到第二層以下的東西...


james0714 edited on 2007-01-09 19:51
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-09 20:04 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
james0714 wrote:
喔喔~~了解...poi也是難用...
現在碰到抓dom的東西又卡住了...
Dead

挖咧....用servlet做的話...
還是得碰到html.....

那zk的強大功能就浪費掉啦@@
目前我的作法都是繼承zul的物件來做
可是現在抓不到第二層以下的東西...


您看完了手冊裡 id space的部份了嗎?
要不要從哪裡開始?


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-10 09:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝您提供的資料來源
不過我的狀況是....

以下在zscript裡用smrWindow就抓的到了
1
<x:window title="功能項目內容" border="normal" id="smrWindow">


而以下這種狀況...
1
2
<x:window title="功能項目內容" border="normal" id="smrWindow">
  <x:grid id="itemGrid" use="com.ujd.events.ItemDetailGrid">

用getFellow是抓不到的....getFellowIfAny也是空白....

尚再追蹤當中...

自己補充...

後來重新做過之後可以了...方法很簡單...不曉得當初在想什麼Dead
smrWindow.getFellow("itemGrid")

手冊裡好像只提到getFellow..沒說明對象...


james0714 edited on 2007-01-10 09:57
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-10 15:40 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
恕刪……

我貼一下我測試Path.getComponent()與getFellow()的心得
自已的心得,沒人認證,程式無誤,有錯請補充!
1、testIDSpace.zul如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<window id="win1">
  <label id="label1" value="label1" />
  <label id="label2" value="label2" />
  <window id="win2">
    <label id="label3" value="label3" />
    <label id="label4" value="label4" />
    <toolbarbutton id="tbtn" label='update Text'
      onClick='Home.replace_text(self)' />
    <window id="win3">
      <label id="label5" value="label5" />
      <label id='label6' value="label6" />
    </window>
  </window>
 
</window>

2、Home.java如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Path;
import org.zkoss.zul.Label;
 
public class Home {
 
    public static void replace_text(Component com) {
        /*
         * 傳進來的是idspace為win2的toolbarbutton component
         * 想要變更上階的idspace裡的label1,要用Path.getComponent()
         * 若想變更本階或下階的idspace裡的label,則可用getFellow()或Path.getComponent()
         */
        Label lm1 = (Label) Path.getComponent("/win1/label1");
        lm1.setValue("lm1");
        Label lm2 = (Label) Path.getComponent("/win1/label2");
        lm2.setValue("lm2");
 
        Label lm3 = (Label) com.getFellow("label3");
        lm3.setValue("lm3");
        Label lm4 = (Label) Path.getComponent("/win1/win2/label4");
        lm4.setValue("lm4");
        
        Label lm5 = (Label) com.getFellow("win3").getFellow("label5");
        lm5.setValue("lm5");
        Label lm6 = (Label) Path.getComponent("/win1/win2/win3/label6");
        lm6.setValue("lm6");
 
    }
}


這樣子看完,應該沒有找不到的元件了吧!


peterpai edited on 2007-01-10 15:42
reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-11 12:34 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不過我有個疑問..在妳原本的系統裡面
include_3裡面的頁面要怎麼抓include_3這個component?


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-11 12:58 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
恕刪…

您覺得它什麼時候應該要抓?不抓會怎麼樣?


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:peterpai]
james0714





發文: 39
積分: 0
於 2007-01-15 09:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
peterpai wrote:
恕刪…

您覺得它什麼時候應該要抓?不抓會怎麼樣?

這樣特殊的作法就會需要特殊的用法阿
如果當你需要切畫面時就會需要抓囉


reply to postreply to post
作者 Re:我的web erp分享,使用zk! [Re:james0714]
peterpai

peterpai



發文: 103
積分: 1
於 2007-01-15 11:30 user profilesend a private message to usersend email to peterpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Smile
有點忙,我就只寫做法了好嗎?如果有問題再跟我說。

用getFellow()不就可以一路抓下來了嗎?像前面我貼的例子(testIDSpace)。

所以用mail.getFellow("...").getFellow("...").getFellow("...");
看有幾層就用幾個getFellow("...")不就可以解決了嗎?

------------------補充一下…
每要層您要識別的元件都要設id,這樣getFellow()裡才有東西可以填!


peterpai edited on 2007-01-15 13:48
reply to postreply to post
go to first page go to previous page  1   2  go to next page go to last page
» JWorld@TW »  AJAX討論區 » ZK

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8