界面

//所有的数据全部在集合中
            //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. Go 接口转换的一个例子

    今天将Go 的websocket集成到已有的http中时也遇到以下一个问题:其中主要是接口类型转换 转载自[http://www.cnblogs.com/ghj1976/archive/2013/04 ...

  2. ImageLoader(多线程网络图片加载)+本地缓存 for windowsphone 7

    搞了好长一阵子wp,做点好事. C/S手机app中应用最多的是  获取网络图片,缓存到本地,展示图片 本次主要对其中的delay:LowProfileImageLoader进行修改,在获取图片的时候, ...

  3. Java数字格式化输出时前面补0

    Java数字格式化输出时前面补0 星期日 2014年11月30日|  分类: Java     /** * 里数字转字符串前面自动补0的实现. * */ public class TestString ...

  4. SQL SERVER 遇到Unable to find the requested .Net Framework Data Provider. It may not be installed. (System.Data)

    今天新装的SQLSERVER 2012 EXPRESS 用于客户端程序 安装完成后打开登陆SQLSERVER 一切正常 当查看表定义.视图结构时,弹出一下内容 Unable to find the r ...

  5. amazon RequestReport

    _GET_SELLER_FEEDBACK_DATA_        MarketplaceIdList 这此字段必填,否则无法取到报告

  6. IE11下ASP.NET Forms身份认证无法保存Cookie的问题

    IE11下ASP.NET Forms身份认证无法保存Cookie的问题 折腾了三四天,今天才找到资料,解决了. 以下会转贴,还没来得及深究,先放着,有空再学习下. ASP.NET中使用Forms身份认 ...

  7. putty 代理设置

    代理分 http 和 socket 代理. IE Internet属性-> 连接 -> 局域网设置 普通HTTP代理 直接输入IP,端口 socket 代理  点高级 套接字设置 安装好P ...

  8. jquer ajax

    function SetValue() { var strCodeName = $("#MainContent_ddlFullNameAndFullName").val(); ) ...

  9. GridView ItemCommand

    GridView ItemCommand中取某行某列的值方法,这里提供两个常用的: 一.用CommandArgument属性取值页面如下: <asp:TemplateColumn HeaderT ...

  10. Linux内核中的常用宏container_of

    Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址. Containe ...