con siguientes características.
2. Se utilizara el archivo DatosCliente.xml para las operaciones, primero se filtraran los resultados a mostrar utilizando Linq to xml.
_________________________________________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<DatosCliente>
<Clientes>
<Dni>14117934</Dni>
<Nombres>Nelson</Nombres>
<Apellidos>Rojas Gonzales</Apellidos>
<Telefono>983757625</Telefono>
<Email>johnelgr@gmail.com</Email>
<Sexo>masculino</Sexo>
</Clientes>
<Clientes>
<Dni>18116712</Dni>
<Nombres>eric</Nombres>
<Apellidos>quispe</Apellidos>
<Telefono>2324567</Telefono>
<Email>rebe@gmail.com</Email>
<Sexo>masculino</Sexo>
</Clientes>
<Clientes>
<Dni>15671298</Dni>
<Nombres>julio</Nombres>
<Apellidos>roman</Apellidos>
<Telefono>142346</Telefono>
<Email>julio@gmail.com</Email>
<Sexo>Masculino</Sexo>
</Clientes>
<Clientes>
<Dni>12345678</Dni>
<Nombres>leticia</Nombres>
<Apellidos>cuellar vega</Apellidos>
<Telefono>234567</Telefono>
<Email>leti@gmail.com</Email>
<Sexo>femenino</Sexo>
</Clientes>
<Clientes>
<Dni>98765432</Dni>
<Nombres>miriam</Nombres>
<Apellidos>carrasco lopez</Apellidos>
<Telefono>234567</Telefono>
<Email>miriam@gmail.com</Email>
<Sexo>femenino</Sexo>
</Clientes>
<Clientes>
<Dni>10113456</Dni>
<Nombres>rebeca</Nombres>
<Apellidos>perez sierra</Apellidos>
<Telefono>2324567</Telefono>
<Email>rebe@gmail.com</Email>
<Sexo>femenino</Sexo>
</Clientes>
<Clientes>
<Dni>47893885</Dni>
<Nombres>manuel</Nombres>
<Apellidos>quispe carrasco</Apellidos>
<Telefono>305030</Telefono>
<Email>manuel@gmail.com</Email>
<Sexo>masculino</Sexo>
</Clientes>
<Clientes>
<Dni>98723145</Dni>
<Nombres>jorge</Nombres>
<Apellidos>tello</Apellidos>
<Telefono>123456789</Telefono>
<Email>jorge@gmail.com</Email>
<Sexo>masculino</Sexo>
</Clientes>
</DatosCliente>
_________________________________________________________________________________
3. Agregaremos una clase Cliente.cs a nuestro proyecto para realizar las operaciones de Agregar,Actualizar,Eliminar,Buscar,Mostrar.
_________________________________________________________________________________
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace XmLtoLinQ
{
class Cliente
{
private string cliDni;
private string cliNombres;
private string cliApellidos;
private string cliTelefono;
private string cliEmail;
private string cliSexo;
//Constructor sin Parametro
public Cliente() { }
//Constructor con Parametro
public Cliente(string cliDni,string cliNombres,string cliApellidos,string cliTelefono,string cliEmail,string cliSexo)
{
this.CliDni = cliDni;
this.CliNombres = cliNombres;
this.CliApellidos = cliApellidos;
this.CliTelefono = cliTelefono;
this.CliEmail = cliEmail;
this.CliSexo = cliSexo;
}
XDocument DocXML;
string path = "F:\\TallerProgramacion II 2017-I\\XmLtoLinQ\\XmLtoLinQ\\DatosXml\\DatosCliente.xml";
//========================= AGREGAR REGISTROS ======================
public void Agregar(string cliDni, string cliNombres, string cliApellidos, string cliTelefono, string cliEmail, string cliSexo)
{
try
{
DocXML = XDocument.Load(path);
XElement NuevoRegistro = new XElement("Clientes",
new XElement("Dni", cliDni),
new XElement("Nombres", cliNombres),
new XElement("Apellidos", cliApellidos),
new XElement("Telefono", cliTelefono),
new XElement("Email", cliEmail),
new XElement("Sexo", cliSexo));
DocXML.Element("DatosCliente").Add(NuevoRegistro);
DocXML.Save(path);
}
catch (Exception ex)
{
throw ex.InnerException;
}
}
//================== ACTUALIZAR REGISTROS ==========================
public void Editar(string cliDni, string cliNombres, string cliApellidos, string cliTelefono, string cliEmail, string cliSexo)
{
DocXML = XDocument.Load(path);
var items = (from item in DocXML.Descendants("Clientes")
where item.Element("Dni").Value == cliDni
select item).ToList();
foreach (var item in items)
{
item.Element("Dni").Value = cliDni;
item.Element("Nombres").Value = cliNombres;
item.Element("Apellidos").Value = cliApellidos;
item.Element("Telefono").Value = cliTelefono;
item.Element("Email").Value = cliEmail;
item.Element("Sexo").Value = cliSexo;
}
DocXML.Save(path);
}
//============================ ELIMINAR REGISTROS ===================
public void Eliminar(string cliDni)
{
DocXML = XDocument.Load(path);
var EliminarNodo = from NodoEliminar in DocXML.Descendants("Clientes")
where NodoEliminar.Element("Dni").Value == cliDni
select NodoEliminar;
EliminarNodo.Remove();
DocXML.Save(path);
}
//==================== LISTAR REGISTROS ==============================
public Array listaClientes()
{
XElement root = XElement.Load(path);
var clientes = from item in root.Descendants("Clientes")
select new
{
Dni = item.Element("Dni").Value,
Nombres = item.Element("Nombres").Value,
Apellidos = item.Element("Apellidos").Value,
Telefono = item.Element("Telefono").Value,
Email = item.Element("Email").Value,
Sexo = item.Element("Sexo").Value
};
return clientes.ToArray();
}
//==================== BUSCAR POR APELLIDO ==========================
public Array listarxApellido(string textoBuscar)
{
XElement xdoc = XElement.Load(path);
var cliente = from item in xdoc.Descendants("Clientes").
Where(c => c.Element("Apellidos").Value.Contains(textoBuscar))
select new
{
Dni = item.Element("Dni").Value,
Nombres = item.Element("Nombres").Value,
Apellidos = item.Element("Apellidos").Value,
telefono = item.Element("Telefono").Value,
Email = item.Element("Email").Value,
sexo = item.Element("Sexo").Value
};
return cliente.ToArray();
}
//Encapsulamiento de Atributos
public string CliDni
{
get { return cliDni; }
set { cliDni = value; }
}
public string CliNombres
{
get { return cliNombres; }
set { cliNombres = value; }
}
public string CliApellidos
{
get { return cliApellidos; }
set { cliApellidos = value; }
}
public string CliTelefono
{
get { return cliTelefono; }
set { cliTelefono = value; }
}
public string CliEmail
{
get { return cliEmail; }
set { cliEmail = value; }
}
public string CliSexo
{
get { return cliSexo; }
set { cliSexo = value; }
}
}
}
_________________________________________________________________________________
4. En nuestro formulario frmCliente.cs realizamos lo siguiente.
//instancia a la clase
Cliente cli = new Cliente();
------------------------------------------------------------------------------------------------------------------------
private void btnGuardar_Click(object sender, EventArgs e)
{
string dni =txtDni.Text;
string nombre = txtNombres.Text;
string apellido = txtApellidos.Text;
string telefono = txtTelefono.Text;
string email = txtEmail.Text;
string sexo = txtSexo.Text;
cli.Agregar(dni, nombre, apellido, telefono, email, sexo);
MessageBox.Show("Se inserto Correctamente el Registro ;) ;)");
listar();
}
------------------------------------------------------------------------------------------------------------------------
public void listar()
{
this.dataListado.DataSource = cli.listaClientes();
}
------------------------------------------------------------------------------------------------------------------------
private void frmCliente_Load(object sender, EventArgs e)
{
listar();
}
------------------------------------------------------------------------------------------------------------------------
private void btnEditar_Click(object sender, EventArgs e)
{
string dni = txtDni.Text;
string nombre = txtNombres.Text;
string apellido = txtApellidos.Text;
string telefono = txtTelefono.Text;
string email = txtEmail.Text;
string sexo = txtSexo.Text;
cli.Editar(dni, nombre, apellido, telefono, email, sexo);
MessageBox.Show("Se Actualizo Correctamente el Registro :) :)");
listar();
}
------------------------------------------------------------------------------------------------------------------------
private void dataListado_DoubleClick(object sender, EventArgs e)
{
this.txtDni.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Dni"].Value);
this.txtNombres.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Nombres"].Value);
this.txtApellidos.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Apellidos"].Value);
this.txtTelefono.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Telefono"].Value);
this.txtEmail.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Email"].Value);
this.txtSexo.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Sexo"].Value);
}
------------------------------------------------------------------------------------------------------------------------
private void btnEliminar_Click(object sender, EventArgs e)
{
try
{
DialogResult Opcion;
Opcion = MessageBox.Show("Realmente desea Eliminar los Registros","Clientes",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if(Opcion==DialogResult.OK)
{
string Codigo;
foreach(DataGridViewRow row in dataListado.Rows)
{
if(Convert.ToBoolean(row.Cells[0].Value))
{
Codigo = Convert.ToString(row.Cells[1].Value);
cli.Eliminar(Codigo);
MessageBox.Show("Se Elimino Correctamente el Registro :( :(");
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.StackTrace);
}
listar();
}
------------------------------------------------------------------------------------------------------------------------
private void chkEliminar_CheckedChanged(object sender, EventArgs e)
{
if(chkEliminar.Checked)
{
this.dataListado.Columns[0].Visible = true;
}
else
{
this.dataListado.Columns[0].Visible = false;
}
}
------------------------------------------------------------------------------------------------------------------------
private void dataListado_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataListado.Columns["Eliminar"].Index)
{
DataGridViewCheckBoxCell ChkEliminar = (DataGridViewCheckBoxCell)dataListado.Rows[e.RowIndex].Cells["Eliminar"];
ChkEliminar.Value = !Convert.ToBoolean(ChkEliminar.Value);
}
}
------------------------------------------------------------------------------------------------------------------------
private void btnLimpiar_Click(object sender, EventArgs e)
{
txtDni.Text = "";
txtNombres.Text = "";
txtApellidos.Text = "";
txtTelefono.Text = "";
txtEmail.Text = "";
txtSexo.Text = "";
}
------------------------------------------------------------------------------------------------------------------------
public void listarxApellido(string textoBuscar)
{
this.dataListado.DataSource = cli.listarxApellido(textoBuscar);
}
------------------------------------------------------------------------------------------------------------------------
private void txtBuscaPorNombre_KeyPress(object sender, KeyPressEventArgs e)
{
listarxApellido(txtBuscaPorNombre.Text);
}
------------------------------------------------------------------------------------------------------------------------
private void btnBuscar_Click(object sender, EventArgs e)
{
listarxApellido(txtBuscaPorNombre.Text);
}
------------------------------------------------------------------------------------------------------------------------
LINQ to XML CRUD (Create Read Update Delete) en C#
Descarga el código fuente
0 comments:
Publicar un comentario