界面

//所有的数据全部在集合中
            //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("请先选中要修改的行");
            }

}
    }
}

转载于:https://www.cnblogs.com/CSharpLover/p/5193689.html

C#操作xml文档,cuid,dategridview显示数据相关推荐

  1. 【Qt】DOM创建和操作XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 创建XML文档 04. 读取XML文档 05. 增加XML节点 06. 查找.删除.更新XML文档 07. 附录 01. ...

  2. [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档

    [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档 楼主  发表于 2013-5-21 22:00:51 | 查看: 475| 回复: 0 使用DOM创建和操作XML文档 版权声明 该 ...

  3. VBS操作XML文档,拷贝结点 (转)

    VBS操作XML文档,拷贝结点 (转) Dim xmlDoc,xmlRoot,xmlNode,lastNode,newNode Dim doc,docRoot,i,flag Dim strNodeNa ...

  4. 操作xml文档的常用方式

    1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...

  5. 使用Libxml2操作XML文档

    一.Libxml2介绍: Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件.它除了支持c语言版以外,还支持c++.PHP ...

  6. xmlDocument来操作xml文档

    它的作用是解析xml文档,将其转换为对象,使你可以在程序中对其操作 例如如下的xml文档: <?xml version="1.0" encoding="utf-8& ...

  7. 第十三章、C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)...

    XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子 ...

  8. LINQ to XML 操作XML文档

    使用 XDocument 对象的 Element 方法,获取制定层次结构中指定一个元素的值 public void MyDocElement(){XDocument xdoc = XDocument. ...

  9. 利用可扩展样式表语言xsl显示xml文档

    实验环境:xmlspy2013 firefox: 一.问题: 1.对于下列XML文档,根据要求编写在XML文档上对应的XSL样式表. <?xml version="1.0" ...

最新文章

  1. SQL获取当月天数的几种方法
  2. CentOS探索之路2---使用rpm安装JDK
  3. pwnable.kr lotto题解
  4. DEBUG org.springframework.web.servlet.DispatcherServlet - Error rendering view [org.thymeleaf.spring
  5. C++ STL学习笔记 : 1. template 模板函数
  6. 4.1.3数据报与虚电路
  7. mysql 表空间加密,MySql(8.0)基于docker部署(加密存储表空间)
  8. 小波神经网络模型matlab,神经网络预测模型优点
  9. 浅聊信创投资研究框架| 信创
  10. Visio | 动画制作
  11. VBScript 基础知识
  12. 这四大配音神器你用过几个?哪个好用?
  13. 怎么看计算机内存和独显,怎么看电脑是集成显卡还是独立显卡
  14. 作为股权类投资人,我们的投资偏好和投资原则
  15. Springboot毕设项目博客系统anx64(java+VUE+Mybatis+Maven+Mysql)
  16. ArcGIS教程:解决在mxd文件,定义投影之后,数据源还是的投影坐标系还是未发生改变的问题。
  17. 在ASP.NET开发中一些单词的标准缩写
  18. pc是指什么型号的计算机,pc_pc是什么意思-太平洋IT百科手机版
  19. Ofd文档要修改怎么办?可以转成Word吗
  20. 我的世界基岩版种子和java版种子_我的世界:值得珍藏3个种子,号称MC最“完美”的三座山脉!...

热门文章

  1. 联想服务器设置虚拟化,联想服务器虚拟化方案构建数字校园
  2. 《信号与系统》(吴京)部分课后习题答案与解析——第七章(PART1)(ZT)
  3. 计算机软件财务记账归入科目,开票用的电脑、打印机计入什么科目
  4. 离散数学 等价类 等价关系 划分
  5. pdf提取其中一页,怎么实现?
  6. john破解用户密码和防破解
  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库
  8. win7蓝屏_win7蓝屏如何修复
  9. 计算机开机时的音乐是什么,电脑开机的那段音乐是什么啊?很好听啊
  10. eclipse php设置xdebug,eclipse 中配置php的 XDebug调试