2012-05-31 58 views
1

我是ZK的新手,我想創建一個帶查詢字符串結果的行。如何使用ZK在網格中顯示查詢結果?

這是我的代碼:

<window title="REPORTE IMPRESION" border="normal"> 
    <zscript><![CDATA[ 
    import java.sql.*; 
    void submit() { 
     //load driver and get a database connetion 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     Connection conn = DriverManager.getConnection(
       "jdbc:sqlserver://127.0.0.1;databaseName=Reports", "sa", "sa"); 
     PreparedStatement stmt = null; 
     try { 
      stmt = conn 
        .prepareStatement("select s.ID, s.NOMBRE, c.FECHA, c.PAG, c.TOTAL, c.PAG * 3.3 as TOTAL_PAGAR, c.PAG * 2.67 as Impresion, (c.PAG * 2.67)+(c.PAG * 3.3) as R FROM C_Sucursal s, Corte c where s.CLAVE=c.CLAVE and c.FECHA=?"); 

      //insert what end user entered into database table 
      stmt.setString(1, fecha.getContext()); 
      //execute the statement and Put the result in a ResultSet 
      PreparedStatement consulta1 = stmt; 
      ResultSet result1 = consulta1.executeQuery(); 
      int i=0; 
      while(result1.next()){ 
          //Here i need to put the result in a row! 
       System.out.println(result1.getObject(i)); 
       i++; 
      } 

     } finally { //cleanup 
      if (stmt != null) { 
       try { 
        stmt.close(); 
       } catch (SQLException ex) { 
        log.error(ex); //log and ignore 
       } 
      } 
      if (conn != null) { 
       try { 
        conn.close(); 
       } catch (SQLException ex) { 
        log.error(ex); //log and ignore 
       } 
      } 
     } 
    } 
]]> 
    </zscript> 
    <div apply="org.zkoss.bind.BindComposer"> 
     <borderlayout sclass="complex-layout" height="580px"> 
      <north size="120px" border="0"> 
       <div> 
        <image sclass="complex-layout-header-img" 
         src="/images/bb.png" /> 
       </div> 
      </north> 
      <!-- Content --> 
      <center> 
       <div> 
        <hlayout> 
         <label sclass="hightlight"> 
          Fecha del Corte 
         </label> 
        </hlayout> 
        <datebox id="fecha" width="150px" 
         format="dd-MM-yyyy" /> 
        <button label="submit" onClick="submit()" /> 
        <grid> 
         <columns menupopup="auto"> 
          <column label="ID" sort="auto" /> 
          <column label="SUCURSAL" sort="auto" /> 
          <column label="PAGINAS" sort="auto" /> 
          <column label="EDO_CUENTA" sort="auto" /> 
          <column label="TOTAL A PAGAR" sort="auto" /> 
          <column label="IMPRESION" sort="auto" /> 
          <column label="ENVIO" sort="auto" /> 
         </columns> 
        </grid> 
       </div> 
      </center> 
      <south size="40px" border="0" 
       style="background: none repeat scroll 0 0 ;"> 
       <toolbar mold="panel" align="center"> 
        DERECHOS RESERVADOS 
       </toolbar> 
      </south> 
     </borderlayout> 
    </div> 
</window> 

如何把查詢結果網格中的行?幫幫我!

我做了一個statern,結果是我需要放在行中,但我不知道如何把結果。

回答

1

給你的網格一個id,把它傳遞給你的方法,你可以在你的方法中使用Grid對象(你傳入的)並根據需要創建行來顯示你的數據。

<grid id="myGrid"> 
    <columns menupopup="auto"> 
    <column label="ID" sort="auto" /> 
    <column label="SUCURSAL" sort="auto" /> 
    <column label="PAGINAS" sort="auto" /> 
    <column label="EDO_CUENTA" sort="auto" /> 
    <column label="TOTAL A PAGAR" sort="auto" /> 
    <column label="IMPRESION" sort="auto" /> 
    <column label="ENVIO" sort="auto" /> 
    </columns> 
</grid> 

當你打電話給你的功能,通過在「myGrid」它

submit(myGrid); 

讓說,你有努力的結果添加到網格中爲你的私有方法,說你結果被包裹在一個名爲「Data」的對象中,下面將顯示網格中的數據:

private void displayResult(Grid myGrid, List<Data> data) 
{ 

    Rows rows = new Rows(); 
    rows.setParent(programGrid);  

    for(Data d : data) 
    { 
     Label idLabel = new Label(d.getID()); 
     Label sucursalLabel = new Label(d.getSucursal()); 
     Label paginasLabel = new Label(d.getPaginas()); 
     .... etc ... 

     Row row = new Row();  

     idLabel.setParent(row); 
     sucursalLabel.setParent(row); 
     paginasLabel.setParent(row); 
     .... etc ... 

     row.setParent(rows); 
    } 
}