Ramon Torras

TECHNOLOGY ENTHUSIAST

INFOPATH 2007 – Tablas de repetición (agregar i eliminar por codigo)

A menudo nos interesa gestionar las filas de una tabla de repetición nosotros a modo de controlar que no se quede vacia.
 
Este es un codigo de ejemplo para crear una nueva fila (clonando la anterior, ese es el motivo por el cual no queremos que nunca esté vacia)
 
INSERTAR NUEVA FILA (se puede incluir en un boton)
—————————————————————–
Dim navigator As XPathNavigator = Me.MainDataSource.CreateNavigator()
Dim rows As XPathNodeIterator = navigator.Select( /my:myFields/my:InfoDetalleGastos , NamespaceManager)
 
Dim row As XPathNavigator = Me.MainDataSource.CreateNavigator().SelectSingleNode( /my:myFields/my:InfoDetalleGastos[ + rows.Count.ToString + ] , NamespaceManager)
Dim newrow As XPathNavigator = row.Clone()
row.InsertAfter(newrow)
newrow.MoveToNext()
newrow.SelectSingleNode( my:TipologiaGasto , NamespaceManager).SetValue( )
newrow.SelectSingleNode( my:Descripcion , NamespaceManager).SetValue( )
newrow.SelectSingleNode( my:Importe , NamespaceManager).SetValue( )
newrow.SelectSingleNode( my:Divisa , NamespaceManager).SetValue( )
newrow.SelectSingleNode( my:Fecha , NamespaceManager).SetValue( )
 
BORRAR LA FILA EXISTENTE (incluir codigo en un boton)
——————————————————————————–
 
Dim navigator As XPathNavigator = Me.MainDataSource.CreateNavigator()
Dim rows As XPathNodeIterator = navigator.Select( /my:myFields/my:InfoDetalleGastos , NamespaceManager)
If rows.Count > 1 Then
Dim row As XPathNavigator = Me.MainDataSource.CreateNavigator().SelectSingleNode( /my:myFields/my:InfoDetalleGastos[ + rows.Count.ToString + ] , NamespaceManager)
Dim newrow As XPathNavigator = row.Clone()
row.DeleteSelf()
newrow.MoveToPrevious()
End If
If rows.Count = 1 Then
Dim row As XPathNavigator = Me.MainDataSource.CreateNavigator().SelectSingleNode( /my:myFields/my:InfoDetalleGastos[1] , NamespaceManager)
row.SelectSingleNode( my:TipologiaGasto , NamespaceManager).SetValue( )
row.SelectSingleNode( my:Descripcion , NamespaceManager).SetValue( )
row.SelectSingleNode( my:Importe , NamespaceManager).SetValue( )
row.SelectSingleNode( my:Divisa , NamespaceManager).SetValue( )
row.SelectSingleNode( my:Fecha , NamespaceManager).SetValue( )
End If
 
NOTA: Nos damos cuenta en el codigo de borrar si solo queda una fila, no la borramos la inicializamos  a vacia.
 
 
 
Salut

Comments are currently closed.