[Gvsig_desarrolladores] Edición de Valores en una Feature a traves de un formulario propio
Domingo Baeza
dbaeza en grafos.es
Mie Ago 30 12:27:49 CEST 2006
Buenos días.
Ya conseguí editar los valores de una feature a través de un formulario
y no a través “de la tabla de atributos”
Realmente lo que he realizado es acceder a la tabla de atributos de una
forma transparente, siguiendo el código que tenéis en la clase
Table.java y ShowTable.java
//Acceder al mapa y traerse la tabla
AlphanumericData co =
(AlphanumericData) layer;
ProjectExtension ext =
(ProjectExtension) PluginServices.getExtension(ProjectExtension.class);
ProjectTable projectTable =
ext.getProject().getTable(co);
EditableAdapter ea=null;
ReadableVectorial
rv=((FLyrVect)layer).getSource();
if (rv instanceof
VectorialEditableAdapter){
ea=(EditableAdapter)((FLyrVect)layer).getSource();
}else{
ea=new EditableAdapter();
SelectableDataSource sds
= null;
try {
sds =
((FLyrVect)layer).getRecordset();
} catch (DriverException
e) {
// TODO
Auto-generated catch block
e.printStackTrace();
}
ea.setOriginalDataSource(sds);
}
if (projectTable == null) {
try {
projectTable
= ProjectFactory.createTable(PluginServices.getText(this,
"Tabla_de_Atributos") + ": " + layer.getName(),
ea);
} catch
(com.hardcode.gdbms.engine.data.driver.DriverException e) {
// TODO
Auto-generated catch block
e.printStackTrace();
}
projectTable.setAssociatedTable(co);
ext.getProject().addTable(projectTable);
}
projectTable.setModel(ea);
Table t = new Table();
t.setModel(projectTable);
//PluginServices.getMDIManager().addView(t);
//Recorrer la tabla de la feature
hasta llegar al registro deseado
try {
for (int
iFila=0;iFila<projectTable.getModelo().getRowCount();iFila++){
DataSourceDataModel dsdm
= (DataSourceDataModel) t.getTable().getModel();
Value[] values = new
Value[dsdm.getColumnCount()];
int nIndice =
Integer.parseInt(oNodo.toString());
if
(iFila==nIndice){
for (int i =
0; i < dsdm.getColumnCount(); i++) {
values[i] = (Value) dsdm.getValueAt(iFila, i);
// Pasamos los valores al formulario
txtCampo.setText(dsdm.getValueAt(iFila, i).toString());
PluginServices.getMainFrame().enableControls();
}//Del For
} // Del If
}
} catch (DriverIOException e) {
// TODO Auto-generated
catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated
catch block
e.printStackTrace();
}
Y para grabar he realizado algo similar, primero paso el valor a la
tabla de la capa
//Acceder a la tabla y cambiar los registros
//Acceder al mapa y traerse la tabla
AlphanumericData co = (AlphanumericData) layer;
ProjectExtension ext = (ProjectExtension)
PluginServices.getExtension(ProjectExtension.class);
ProjectTable projectTable =
ext.getProject().getTable(co);
EditableAdapter ea=null;
ReadableVectorial
rv=((FLyrVect)layer).getSource();
if (rv instanceof VectorialEditableAdapter){
ea=(EditableAdapter)((FLyrVect)layer).getSource();
}else{
ea=new EditableAdapter();
SelectableDataSource sds = null;
try {
sds =
((FLyrVect)layer).getRecordset();
} catch (DriverException ee) {
// TODO Auto-generated
catch block
ee.printStackTrace();
}
ea.setOriginalDataSource(sds);
}
if (projectTable == null) {
try {
projectTable =
ProjectFactory.createTable(PluginServices.getText(this,
"Tabla_de_Atributos") + ": " + layer.getName(),
ea);
} catch
(com.hardcode.gdbms.engine.data.driver.DriverException e3) {
// TODO Auto-generated
catch block
e3.printStackTrace();
}
projectTable.setAssociatedTable(co);
ext.getProject().addTable(projectTable);
}
projectTable.setModel(ea);
Table t = new Table();
t.setModel(projectTable);
//PluginServices.getMDIManager().addView(t);
try {
for (int
iFila=0;iFila<projectTable.getModelo().getRowCount();iFila++){
DataSourceDataModel dsdm =
(DataSourceDataModel) t.getTable().getModel();
Value[] values = new
Value[dsdm.getColumnCount()];
int nIndice =
Integer.parseInt(oNodo.toString());
if (iFila==nIndice){
dsdm.setValueAt(sValor,iFila,nCampo);
((DataSourceDataModel) t.getTable().getModel()).fireTableDataChanged();
PluginServices.getMainFrame().enableControls();
break; //Salgo del bucle
}
} // Del If
} catch (DriverIOException e33) {
// TODO Auto-generated catch block
e33.printStackTrace();
} catch (IOException e333) {
// TODO Auto-generated catch block
e333.printStackTrace();
}
//Fin de leer la tabla asociada
//Fin del cambio del registro
}
Y el grabar, lo realizo con el comando de Stop Editing.
Un Saludo a todos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20060830/846a68ca/attachment-0001.htm
Más información sobre la lista de distribución gvSIG_desarrolladores