C#操作xml文档,cuid,dategridview显示数据
界面
//所有的数据全部在集合中
//dgv控件绑定List集合,List集合中有User类的对象,对象里有属性,把属性绑定到没列的数据上
dgv.DataSource = list;//绑定数据
姓名,密码,性别,年龄列的DataPropertyName分别对应List集合中对象的Name,Password,Gender,Age属性
后台代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
namespace 大项目
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//读取所有用户的信息
LoadUser();
}
private void LoadUser()
{
List<User> list = new List<User>();//存储对象
XDocument xdoc=XDocument.Load("haodongxi.xml");
//获取根元素,遍历该根元素下所有的子元素,并把所有的子元素添加到一个User类型的集合中
XElement root = xdoc.Root;
foreach (XElement user in root.Elements())
{
list.Add(new User() {Id=user.Attribute("id").Value,Name = user.Element("name").Value,Password = user.Element("password").Value,Gender =user.Element("gender").Value,Age = user.Element("age").Value});
}
//所有的数据全部在集合中
//dgv控件绑定List集合,List集合中有User类的对象,对象里有属性,把属性绑定到没列的数据上
dgv.DataSource = list;//绑定数据
if (dgv.Rows.Count>0)//该控件有行(有数据)
{
dgv.SelectedRows[0].Selected = false;//禁止刚加载第一行就被选中
}
// dgv.Columns[0].Visible = false;//隐藏第一列“id”,也可以在设计器中设置id列的Visible属性为false
}
private void btnAdd_Click(object sender, EventArgs e)
{
//获取姓名,性别,年龄,密码,id
//所有添加到xml文件
XDocument xdoc=XDocument.Load("haodongxi.xml");
XElement root = xdoc.Root;
//创建子元素
XElement user=new XElement("user");
user.SetAttributeValue("id",txtId.Text.Trim());//id
user.SetElementValue("name",txtName.Text);//姓名
user.SetElementValue("password",txtPwd.Text);//密码
string gender= rdoMan.Checked?"男":"女";
gender = rdoWoman.Checked ? "女" : "男";
user.SetElementValue("gender",gender);//性别
user.SetElementValue("age",txtAge.Text);
//把子元素添加到根元素中
root.Add(user);
//保存
xdoc.Save("haodongxi.xml");
//刷新
LoadUser();
}
//删除
private void tsmiDelete_Click(object sender, EventArgs e)
{
//判断是否有选中的行
if (dgv.SelectedRows.Count > 0)//有选中的
{
//获取选中行的id,获取的是选中的第一行中的第一个单元格中的值
string id= dgv.SelectedRows[0].Cells[0].Value.ToString();
//根据id去xml文件中查找user标签(id为当前获取的id)
XDocument xdoc=XDocument.Load("haodongxi.xml");
XElement root = xdoc.Root;
//根据id的值去根元素下找所有的user标签,条件就是:id的值和user标签中id的值如果一样则返回当前的user标签
XElement ele= root.Elements("user").Where(x => x.Attribute("id").Value == id).Single();
ele.Remove();//删除选中的节点
MessageBox.Show("操作成功");
xdoc.Save("haodongxi.xml");
LoadUser();
}
else
{
MessageBox.Show("请先选中一行");
}
//没有
}
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
//单击单元格时发生
txtUId.Text = dgv.SelectedRows[0].Cells[0].Value.ToString();//id的值
txtUName.Text = dgv.SelectedRows[0].Cells[1].Value.ToString();//姓名
txtUPwd.Text = dgv.SelectedRows[0].Cells[2].Value.ToString();//密码
txtUAge.Text = dgv.SelectedRows[0].Cells[4].Value.ToString();//年龄
//User属性的声明和datagridview的绑定还是有一定关系的,尽量顺序一样
string gender = dgv.SelectedRows[0].Cells[3].Value.ToString();//性别
rdoUMan.Checked = gender == "男" ? true : false;
rdoUWoman.Checked=gender == "女" ? true : false;
}
private void btnUpdate_Click(object sender, EventArgs e)
{
if (dgv.SelectedRows.Count > 0)
{
//读取xml文件,获取根元素,在根元素中查找id是什么的user标签
XDocument xdoc = XDocument.Load("haodongxi.xml");
//获取根元素
XElement root = xdoc.Root;
XElement xele = root.Elements("user").Where(x => x.Attribute("id").Value == txtUId.Text).Single();
xele.SetElementValue("name", txtUName.Text);
xele.SetElementValue("age", txtUAge.Text);
xele.SetElementValue("password", txtUPwd.Text);
string gender = rdoUMan.Checked ? "男" : "女";
gender = rdoUWoman.Checked ? "女" : "男";
xele.SetElementValue("gender", gender);
//保存
xdoc.Save("haodongxi.xml");
MessageBox.Show("修改成功");
LoadUser();
}
else
{
MessageBox.Show("请先选中要修改的行");
}
}
}
}