User:CTI

From ADempiere
Revision as of 10:25, 8 August 2010 by CTI (Talk) (GRID Save columns in table)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

This Contributions can make possible to save columns GRIDS. Instruccions are in spanish but is easily to translate or understand,just 4 classes need for modify and add one table

package org.compiere.grid
package org.compiere.grid
package org.compiere.swing "class CTable"


//// Grabar en DB las columnas del CCommnadControl en GridControler asociado a un CTable en la vista por muti Filas.

1.- DB. Crear un campo en la Tabla AD_Column Tipo Char(1) Nombre isMultiRow 2.- Actualizar los campos en la Ventana de Tablas y Columnas, Tab Columnas, ya que se puede configurar tambien en el momento

   de diseño de la tabla.


Modificar las siguientes clase.

 package org.compiere.grid;

/**

* Table Grid based on CTable.
* Used in GridController
*
* @author  Jorg Janke
* @version $Id: VTable.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
* 
* @author 	Teo Sarca, SC ARHIPAC SERVICE SRL - FR [ 1753943 ]
*/

public final class VTable extends CTable implements PropertyChangeListener { /** + private final static String SAVE_ALL_COMMAND = CColumnControlButton.COLUMN_CONTROL_MARKER + "saveAll"; + private int pTabla_Id=0; + private GridTab m_mTab = null; /** * Default Constructor */ public VTable() { super(); setAutoscrolls(true); putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); new VTableExcelAdapter(this); // teo_sarca - FR [ 1753943 ]

getActionMap().put(PACK_ALL_COMMAND, createPackAllAction()); + getActionMap().put(SAVE_ALL_COMMAND, createSaveColumnDisplay());

} // VTable

/** * Save all column */ + public void SaveAll() S + { + SaveAll(this); + }

+ public void pAsgTable_id( int iValor_Id) + { + pTabla_Id=iValor_Id; + } + public int pTabla_id() + { + return pTabla_Id; + }

+ public void pSet_mTab(GridTab mTab) + { + m_mTab=mTab; + }

+ public GridTab pGet_mTab() + { + return m_mTab; + } + public void SetColVisible(VTable la_tabla)

       {

+ String SQL = "SELECT * FROM AD_Column WHERE AD_Table_ID =" +la_tabla.pTabla_id() +" and IsActive='Y' and isMultiRow='N'"; + int size = la_tabla.pGet_mTab().getFieldCount (); + try + { + PreparedStatement pstmt = DB.prepareStatement(SQL, "AD_Column"); + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + for (int i = 0; i < size; i++) + { + GridField mField = la_tabla.pGet_mTab().getField (i); + if(mField.getAD_Column_ID()==rs.getInt("Ad_Column_ID")) + { + TableColumn column = null; + column = la_tabla.getColumn(rs.getString("columnname")); + setColumnVisibility(column, false); + break; + } + } + } + rs.close(); + pstmt.close(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + la_tabla.configureEnclosingScrollPane(); + }

+ public void SaveAll(VTable la_tabla) + { + pActiva_todo(la_tabla.pTabla_id()); + for(int hCol=0;hCol<=gethiddenColumns().size()-1;hCol++) + { + TableColumn column = null; + column= gethiddenColumns().get(hCol); + pOculta_Seleccion(column, la_tabla); + } + }

+ private void pOculta_Seleccion(TableColumn column, VTable la_tabla) // + Graba seleccion + { + int size = la_tabla.pGet_mTab().getFieldCount (); + for (int i = 0; i < size; i++) + { + GridField mField = la_tabla.pGet_mTab().getField (i); + if(mField.getHeader().toString().equalsIgnoreCase(column.getHeaderValue().toString())) + { + String sqlUpdate="Update AD_Column set isMultiRow='N' WHERE AD_Table_ID = "+ la_tabla.pTabla_id()+ " and + + AD_Column_ID="+mField.getAD_Column_ID(); + int updated2 = DB.executeUpdate(sqlUpdate, null); + break; + } + } + }


+ private void pActiva_todo(int iTable_id) + { + String sqlUpdate = ""; + sqlUpdate="Update AD_Column set isMultiRow='Y' WHERE AD_Table_ID = "+iTable_id ; + int updated1 = DB.executeUpdate(sqlUpdate, null); + + } } // VTable

//////////////////////////////////////////////////////////////////////////////


/**

* Model Independent enhanced JTable.
* Provides sizing and sorting.
* 
* @author	Jorg Janke
* @version	$Id: CTable.java,v 1.2 2006/07/30 00:52:24 jjanke Exp $
* 
* @author	Teo Sarca, SC ARHIPAC SERVICE SRL - BF [ 1585369 ], FR [ 1753943 ]
*/

+++++ Crear esta funcion

public class CTable extends JTable { + public List<TableColumn> gethiddenColumns() { + return hiddenColumns; + } + { + } } // CTable


///////////////////////////////////////////////////////////////// package org.compiere.grid; public class GridController

En Ininit: private void init() { // Set up Multi Row Table vTable.setModel(m_mTab.getTableModel()); // Update Table Info ------------------------------------------------- + vTable.pAsgTable_id(m_mTab.getAD_Table_ID()); + vTable.pSet_mTab(m_mTab); + vTable.SetColVisible(vTable); int size = setupVTable (m_aPanel, m_mTab, vTable);

        ......

}


} // GridController ///////////////////////////////