界面

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

}
    }
}

C#操作xml文档,cuid,dategridview显示数据的更多相关文章

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

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

  2. 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)

    原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 ...

  3. 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……

    大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...

  4. C#操作XML文档---基础

    增查改删代码如下 public void CreateXML() { XmlDocument xml = new XmlDocument(); xml.AppendChild(xml.CreateXm ...

  5. C#XmlHelper操作Xml文档的帮助类

    using System.Xml; using System.Data; namespace DotNet.Utilities { /// <summary> /// Xml的操作公共类 ...

  6. Jquery 操作xml 文档的方法

    需求: 页面上有两个下拉框,显示游戏大区 和游戏服务器,当游戏大区改变时,游戏服务器也跟着改变 界面部分html代码 <tr class="tkSigUser"> &l ...

  7. [XML] C# XmlHelper操作Xml文档的帮助类 (转载)

    点击下载 XmlHelper.rar 主要功能如下所示 /// <summary> /// 类说明:XmlHelper /// 编 码 人:苏飞 /// 联系方式:361983679 // ...

  8. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

  9. C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)

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

  10. dom4j操作xml文档

    java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. VS2010远程调试

    1, A:调试机. B:远端被调试机. 2, 从A机的VS2010的安装目录里面,找到../Remote Debugger文件,复制到B机. 3, 启动B机上复制过来的目录下的msvsmon.exe ...

  2. 【转】VS2012发布网站详细步骤

    1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自 ...

  3. 一个不错的图片滑动展示插件 anythingslider

    一个不错的图片http://css-tricks.com/anythingslider-jquery-plugin/ DEMO演示: http://css-tricks.github.io/Anyth ...

  4. oracle通过透明网关连接mysql的配置

    之前配置过连接TD的,这一篇是介绍连接Mysql的配置很详细. http://blog.itpub.net/12679300/viewspace-1177222/

  5. 使用bootstrap+asp.net mvc4+IBatis.Net实现的小程序

    这个项目用到了三个技术点 1.bootstap 3.0 2.asp.net mvc4 3.IBatis.Net 这个三个技术点分别解决前端界面展示.中间mvc路由控制.实体框架映射数据访问 重点分页问 ...

  6. 1036. Boys vs Girls (25)

    #include <stdio.h>#include <string.h>int main(){ int n,i; while(scanf("%d",&am ...

  7. Mysql编辑工具中使用(Navicat查询结果显示行号)

    Mysql编辑工具中使用(Navicat查询结果显示行号) as rownum,a.roleId ) t where a.roleId='admin';

  8. 简单加密算法在C#中的实现

    加密是指通过某种特殊的方法,更改已有信息的内容,是的未授权的用户即使得到了加密的信息,如果没有正确的解密算法,那么也无法得到信息的内容. 方法一: //须添加对System.Web的引用 using ...

  9. c#类库中使用Session

    网站开发中,为了保存用户的信息,有时候需要使用session.如果我们在aspx页面中使用Session,只需要Session["key"]=value就可以,获取时使用int u ...

  10. MongoDB 学习

    MongoDB 的官方网站 :https://www.mongodb.org 可通过官方网站下载相应的文件 下载之后对文件进行解压 http://www.cnblogs.com/huangxinche ...