Refrescar wxGrid

Carlos López Pérez clp en opencanarias.com
Mie Nov 2 12:44:24 CET 2005


Hay dos posibles soluciones debido a la forma en la que estás utilizando
el wxGrid:

Primera, más sencilla
Llamar a limpiar los datos antes de rellenar con nuevos mediante:
	self.grdDat.GetTable().Clear()

Segunda, sencilla también pero seguro que funciona, crear de nuevo el
grid
	self.grdDat.CreateGrid(...

Ambas funciones serán llamadas en CargaGrid

Salu2 de clp ;)

El lun, 31-10-2005 a las 12:19 -0500, Mario Lacunza escribió:
> Josep: en q parte pongo el ForceRefresh?? lo tengo comentado en una
> linea del programa xq no hacia nada... Estoy recien aprendiendo wxPython
> x el tema q tengo q hacer un trabajo con urgencia.
> 
> Les agradesco cualquier ayuda!
> 
> Ahi va el codigo completo, por si acaso estoy usando Boa Constructor
> v.0.4.4:
> 
> #-----------------------------------------------------------------------------
> # Name:        frmIngDoc.py
> # Purpose:     
> ##-------------------------------------------------------------------------------
> # Author:      <Mario Lacunza Vasquez>
> #
> # Created:     2005/09/29
> # RCS-ID:      $Id: frmIngDoc.py $
> # Copyright:   (c) 2005
> # License:     <GPL>
> #-----------------------------------------------------------------------------
> #Boa:Frame:Frame1
> 
> import wx
> import wx.grid
> import Conexion #Modulo de Conexion a la DB
> 
> def create(parent):
>     return Frame1(parent)
> 
> [wxID_FRAME1, wxID_FRAME1BTNAGREGAR, wxID_FRAME1GRDDAT, 
>  wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1TXTDOC, 
>  wxID_FRAME1TXTOBS, 
> ] = [wx.NewId() for _init_ctrls in range(7)]
> 
> class Frame1(wx.Frame):   
>     def _init_ctrls(self, prnt):
>         # generated method, don't edit
>         wx.Frame.__init__(self, id=wxID_FRAME1, name=u'Frame1',
> parent=prnt,
>               pos=wx.Point(428, 248), size=wx.Size(411, 371),
>               style=wx.DEFAULT_FRAME_STYLE, title=u'Documentos')
>         self.SetClientSize(wx.Size(411, 371))
>         self.Center(wx.BOTH)
>         self.SetToolTipString(u'')
> 
>         self.txtDoc = wx.TextCtrl(id=wxID_FRAME1TXTDOC, name=u'txtDoc',
>               parent=self, pos=wx.Point(20, 20), size=wx.Size(312, 21),
> style=0,
>               value=u'')
>         self.txtDoc.SetToolTipString(u'Nuevo Documento')
> 
>         self.btnAgregar = wx.Button(id=wxID_FRAME1BTNAGREGAR,
> label=u'Agregar',
>               name=u'btnAgregar', parent=self, pos=wx.Point(340, 20),
>               size=wx.Size(56, 24), style=0)
>         self.btnAgregar.SetToolTipString(u'Agregar')
>         self.btnAgregar.Bind(wx.EVT_BUTTON, self.OnBtnAgregarButton,
>               id=wxID_FRAME1BTNAGREGAR)
> 
>         self.txtObs = wx.TextCtrl(id=wxID_FRAME1TXTOBS, name=u'txtObs',
>               parent=self, pos=wx.Point(24, 312), size=wx.Size(375, 40),
>               style=0, value=u'')
>         self.txtObs.SetToolTipString(u'Ingresar Observaciones')
> 
>         self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
>               label=u'Observaciones', name='staticText1', parent=self,
>               pos=wx.Point(24, 288), size=wx.Size(71, 13), style=0)
> 
>         self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
>               label=u'Descripci\xf3n', name='staticText2', parent=self,
>               pos=wx.Point(24, 8), size=wx.Size(64, 13), style=0)
> 
>         self.grdDat = wx.grid.Grid(id=wxID_FRAME1GRDDAT, name=u'grdDat',
>               parent=self, pos=wx.Point(24, 56), size=wx.Size(368, 224),
>               style=0)
> 
>     def __init__(self, parent, CoServ ='0000'):
>         """Inicializa el Formulario.
>         
>         Carga Datos del Codigo de Servicio por default sino se le pasa 
>         el Codigo 
>         Luego carga los controles."""
>                 
>         self._init_ctrls(parent)
>         
>         #Carga Grid
>         self.CodServ=CoServ
>         self.CargaGrid()
>     
>     def CargaGrid(self):
>         """Carga los datos de la consulta en el grid."""      
>         
>         #Obtiene datos para cargar el Grid
>         self.reg=self.Datos(self.CodServ)
>         #Numero de registros
>         filas=len(self.reg)
>         
>         #borra cualquier dato presente
>         self.grdDat.ClearGrid()
>         
>         #Si tiene registros
>         if filas>0:
>             self.grdDat.CreateGrid(filas,3)
>             self.grdDat.SetColLabelValue(0,"I")
>             self.grdDat.SetColLabelValue(1,"Cod.")
>             self.grdDat.SetColLabelValue(2,"Por Asignar")
>             self.grdDat.SetColFormatBool(0)
>             self.grdDat.SetColSize(0,20)
>             self.grdDat.SetColSize(1,30)
>             self.grdDat.SetColSize(2,200)
>             
>             x=0
>             for r in self.reg:
>                 self.grdDat.SetCellValue(x,1,str(r[1]))
>                 self.grdDat.SetCellValue(x,2,str(r[6]))
>                 x+=1
>                 self.secu=str(r[1])
>                 
>         #Sino hay registros        
>         elif filas==0:
>             self.grdDat.CreateGrid(1,3)
>             self.grdDat.SetColLabelValue(0,"I")
>             self.grdDat.SetColLabelValue(1,"Cod.")
>             self.grdDat.SetColLabelValue(2,"Por Asignar")
>             self.grdDat.SetColFormatBool(0)
>             self.grdDat.AutoSizeColumns(True)
>             self.secu = ' '
>         self.Refresh()
>         #self.grdDat.ForceRefresh()
>     
> 
>     def Datos(self,Codigo):
>         """Ejecuta la consulta."""
>         
>         #Obtengo el conjunto de datos
>         self.cnn=Conexion.Conectar()
>         self.rsIng=self.cnn.EjecutarSQL("Select * From H_REQU_SERV \
>                                 WHERE CO_SERV='%s' ORDER BY NS_SECU" %
> self.CodServ)
>         #Devuelve el recordset en forma de Lista
>         return self.rsIng
>        
>     
>     def Grabar(self):
>         """Graba la informacion de la descripcion."""
>         
>         mdata=self.txtDoc.GetValue()
>         
>         #Aumenta el valor del secuencial
>         var=int(self.secu) + 1
>         ins="Insert into H_REQU_SERV\
>         (CO_SERV,NS_SECU,DE_REQU,IN_ESTA,ID_USUA_MODI,NO_DOCU)\
>         Values('%s',%d,'1','1','00000','%s')" % (self.CodServ,var,mdata)
>         
>         try:
>             self.cnn.EjecutarSQL(ins, TipoSQL = "Insert")
>         
>             dlg=wx.MessageDialog(self,'Se guardo con exito el
> dato','Enlace',wx.OK | wx.ICON_INFORMATION)
>             dlg.ShowModal()
>             dlg.Destroy()
>             #Repintar Grid
>             #borra cualquier dato presente
>             self.CargaGrid()
>            
>             # TODO: Corregir error al recargar formulario!!!!!
>             
>         except ValueError:
>             dlg.wx.MessageDialog(self,'No se guardaron los
> datos','Enlace',wx.OK | wx.ICON_INFORMATION)
>             dlg.ShowModal()
>             dlg.Destroy()
>         
> 
> #-------------------------------------------------------------------------------
>     
>     def OnBtnAgregarButton(self, event):
>         """Agregar nuevo Documento relacionado al Servicio."""
>             
>         self.Grabar()
>         
> 
> 
> 
> Saludos / Best regards 
> 
> Mario Lacunza Vásquez 
> Desarrollador de Software - Webmaster 
> 
> Teléfono       : 51-1-476-7423
> Celular        : 51-1-93-100-386 (Claro) 
> Website        : http://mlacunzav.cogia.net 
> Email          : mlacunza en gmail.com 
> Blog           : http://mlacunza.blogspot.com 
> Messenger MSN  : mario_lacunza en hotmail.com 
> Yahoo Messenger: mario_lacunza en yahoo.es 
> Lima - Peru
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
-- 
Carlos López Pérez <clp en opencanarias.com>

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es