Hola, me dejaròn a hacer un proyecto en donde tengo que generar un pdf con itextsharp, osea, en mi formulario tengo 2 datagridview, pero los datos no son estaticos, son variables, osea, como pueden ser 2 datos en la tabla como pueden ser "n"datos, los datos que aparecen en las tablas los cargo de un archivo xml, mi duda es como lo puedo hacer, o si saben de algun tutorial o ejemplos, de verdad que se los agradecería mucho. o si alguien me podría dar el codigo, la verdad me urge y ya tengo como una semana q no lo puedo acabar. :(. Necesito que al generar el pdf los cargue con las tablas y datos que jalo del xml. Me han dicho que tengo que hacer una tabla dinamica pero la verdad no sé, y ya stoy desesperada.
Este es mi codigo:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.IO;
using
System.Xml;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Collections;
//importamos
using
iTextSharp.text.pdf;
using
iTextSharp.text;
namespace
xmlParser
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnGenerar_Click(object sender, EventArgs e)
{
OpenFileDialog dlgAbrir = new OpenFileDialog();
dlgAbrir.Filter =
"Archivos XML|*.xml|Archivos de texto|*.txt|Todos los archivos|*.*";
dlgAbrir.Title =
"Abrir archivo XML";
if (dlgAbrir.ShowDialog() == DialogResult.OK)
{
txtArchivo.Text = dlgAbrir.FileName.ToString();
try
{
XmlDocument doc = new XmlDocument();
doc.Load(txtArchivo.Text);
XmlNodeList inconsistencias = doc.GetElementsByTagName("inconsistencias");
foreach (XmlNode nodo in inconsistencias)
{
XmlElement documento = (XmlElement)nodo;
string numeroPrestamo = documento.GetElementsByTagName("numeroPrestamo")[0].InnerText;
XmlNodeList inconsistencia = documento.GetElementsByTagName("inconsistencia");
foreach (XmlNode nodo2 in inconsistencia)
{
XmlElement nodoTipo = (XmlElement)nodo2;
if (nodoTipo.InnerXml.Contains("errorIntegridad"))
{
string nombreDocumento1 = nodoTipo.GetElementsByTagName("nombre")[0].InnerText;
string nombreDocumento2 = nodoTipo.GetElementsByTagName("nombre")[1].InnerText;
string metadato1 = nodoTipo.GetElementsByTagName("metadato1")[0].InnerText;
string metadato2 = nodoTipo.GetElementsByTagName("metadato2")[0].InnerText;
string valorMetadato1 = nodoTipo.GetElementsByTagName("valorMetadato1")[0].InnerText;
string valorMetadato2 = nodoTipo.GetElementsByTagName("valorMetadato2")[0].InnerText;
string error = nodoTipo.GetElementsByTagName("error")[0].InnerText;
System.
Console.WriteLine("Documento 1:" + nombreDocumento1 + " Documento 2:" + nombreDocumento2);
System.
Console.WriteLine("Documento 1:" + metadato1 + " Documento 2:" + metadato2);
System.
Console.WriteLine("Documento 1:" + valorMetadato1 + " Documento 2:" + valorMetadato2);
string[] fila ={ numeroPrestamo, nombreDocumento1, metadato1, valorMetadato1, nombreDocumento2, metadato2, valorMetadato2, error };
dgvERROR_INT.Rows.Add(fila);
}
else
{
if (nodoTipo.InnerXml.Contains("errorNegocio"))
{
string nombre = nodoTipo.GetElementsByTagName("nombre")[0].InnerText;
string metadato1 = nodoTipo.GetElementsByTagName("metadato1")[0].InnerText;
string valorMetadato1 = nodoTipo.GetElementsByTagName("valorMetadato1")[0].InnerText;
System.
Console.WriteLine("Documento 1:" + nombre);
System.
Console.WriteLine("Documento 1:" + metadato1);
System.
Console.WriteLine("Documento 1:" + valorMetadato1);
string[] fila3 = { nombre, metadato1, valorMetadato1 };
dgvERROR_NEG.Rows.Add(fila3);
}
else
{
}
{
if (nodoTipo.InnerXml.Contains("errorIntegridad"))
{
}
System.
Console.WriteLine(numeroPrestamo);
}
}
}
}
}
catch (Exception ex)
{
System.
Console.WriteLine("Error en XML:" + ex.Message.ToString());
}
}