Hola a todos,
Primero de todo, me quiero disculpar por si este tema ya ha salido, pero he estado buscando y no doy encontrado una solución a mi problema. Os comento:
Estoy diseñando un formulario en InfoPath 2007, para luego publicarlo en una biblioteca de SharePoint. Necesito copiar todas las filas de una tabla en otra tabla distinta, todo ello en código C# con VSTA.
Más o menos, el origen de datos que tengo es el siguiente:
tablaOriginal
----ext_tablaOriginal
--------lugarOriginal
--------nombreOriginal
tablaDestino
----ext_tablaDestino
--------lugarDestino
--------nombreDestino
--------ciudadDestino
--------paisDestino
Una vez que el usuario introduzca varias filas en la tablaOrignal, presionando un botón se deberán copiar todas esas filas (lugarOriginal y nombreOriginal) en la tablaDestino. Todo mediante código. (Otro usuario se encargará de introducir el resto de los datos como la ciudad o el pais)
Bien, lo que yo consigo es ir introduciendo los datos en la tabla extensible "tablaDestino". Lo que no soy capaz es de ir leyendo todas las filas insertadas en la "tablaOrigen".
Os envío algo del código que he hecho, por si me lo podeis completar, ya que estoy totalmente perdida:
// Apunto las dos tablas extensibles:
XPathNavigator _tablaOriginal = MainDataSource.CreateNavigator().SelectSingleNode("/my:misCampos/my:tablaOriginal", NamespaceManager);
XPathNavigator _tablaDestino = MainDataSource.CreateNavigator().SelectSingleNode("/my:misCampos/my:tablaDestino", NamespaceManager);
// Recojo el namespace:
string myNameSpace = NamespaceManager.LookupNamespace("my");
// Imagino que aquí debería tener algún tipo de lector que vaya nodo a nodo por la tabla Original para ir leyendo las filas, pero no encuentro cómo:
XmlReader reader = _tablaOriginal.SelectSingleNode("/my:misCampos/my:tablaOrigen", NamespaceManager).ReadSubtree(); // ESTO NO FUNCIONA, CLARO
// Declaro un lector que vaya insertando nodos-hijo e introduzca los datos leídos:
XmlWriter writer = _tablaDestino.SelectSingleNode("/my:misCampos/my:tablaDocuObligatoria", NamespaceManager).AppendChild();
// En un bucle se debería ir escribiendo cada columna de cada fila leída ( no se cómo) y escribiendolo en la tabla de destino:
while (ALGÚN TIPO DE BUCLE QUE RECORRA LA TABLA DE ORIGEN)
{
writer.WriteStartElement("ext_tablaDestino", myNameSpace);
writer.WriteElementString("lugarDestino", myNameSpace, >>lugarOrigen que hemos leido<
writer.WriteElementString("nombreDestino", myNameSpace, >>nombreOrigne que hemos leído<
writer.WriteEndElement();
}
El código está incompleto porque no doy leído todas las filas de la tabla origen. Sé que es un gran esfuerzo por vuestra parte, pero os estaría muy agradecida si me pudiérais echar una mano.
Gracias por todo.