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("请先选中要修改的行");
}
}
}
}
C#操作xml文档,cuid,dategridview显示数据的更多相关文章
- 操作xml文档的常用方式
1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...
- 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 ...
- 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……
大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...
- C#操作XML文档---基础
增查改删代码如下 public void CreateXML() { XmlDocument xml = new XmlDocument(); xml.AppendChild(xml.CreateXm ...
- C#XmlHelper操作Xml文档的帮助类
using System.Xml; using System.Data; namespace DotNet.Utilities { /// <summary> /// Xml的操作公共类 ...
- Jquery 操作xml 文档的方法
需求: 页面上有两个下拉框,显示游戏大区 和游戏服务器,当游戏大区改变时,游戏服务器也跟着改变 界面部分html代码 <tr class="tkSigUser"> &l ...
- [XML] C# XmlHelper操作Xml文档的帮助类 (转载)
点击下载 XmlHelper.rar 主要功能如下所示 /// <summary> /// 类说明:XmlHelper /// 编 码 人:苏飞 /// 联系方式:361983679 // ...
- 文档对象模型操作xml文档
简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子 ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
随机推荐
- UVa11384
题意:给定正整数n,求把1,2,--,n中所有书都变成0的最少操作次数,每次操作可从序列中选择一个或多个整数,同时减去一个相同的正整数. 分析:如1,2,3,4,5,6, 第一步将4,5,6同时减4, ...
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)G爬楼梯
题目描述 由于第m个台阶上有好吃的薯条,所以薯片现在要爬一段m阶的楼梯. 薯片每步最多能爬k个阶梯,但是每到了第i个台阶,薯片身上的糖果都会掉落ai个,现在问你薯片至少得掉多少糖果才能得到薯条? 输入 ...
- Linux C 程序指针和指针数组(NIGH)
指针和指针数组 #include<stdio.h> int main() { , b = ; int *p1 = &a , *p2 = &b ; printf(" ...
- jquery checkBox的问题
在新版的jquery中选择ckeckbox最好使用prop方法,否则会出现一些问题.比如手动点击取消,再使用代码全选或者反选时候就不好使啦!!!
- 数据可视化(一)-Matplotlib简易入门
本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...
- 再次学习C++类之构造函数
学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...
- Python+PyQt 数据库基本操作
Sqlite: 使用Python的sqlite3: 需要注意下commit方式与qt稍有不同 import sqlite3 class DBManager(): def __init__(self): ...
- Nodejs & Mongod
http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/
- linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析(引用)
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...
- 【EF】疑难杂症
用户和购物车数据 主从表 添加 ADO.NET实体数据类型 [Test] public void EntiyConnect() { var context = new projectDatabase ...