说明:把xml中的数据放入到数据源list中然后显示到gridview中,参考上一节内容

1 UI页面

2创建student类

 public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public char Gender { get; set; } }

Student

3把Person.xml放置debug目录下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml; namespace XML_GridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//1创建存储对象集合
List<Student> listStudents = new List<Student>(); //开始读取数据 赋值给集合中的对象
XmlDocument doc = new XmlDocument();
doc.Load("Person.xml"); //获得根节点
XmlElement person = doc.DocumentElement;
//获取根节点的子节点
XmlNodeList students = person.ChildNodes; foreach (XmlNode item in students)
{
//从xml文档中将数据赋值给集合中的Student对象
listStudents.Add(new Student(){
ID = Convert.ToInt32(item.Attributes["ID"].Value),
Name = item["Name"].InnerText,
Age = Convert.ToInt32(item["Age"].InnerText),
Gender = Convert.ToChar(item["Gender"].InnerText)
});
} //将数据显示到dataGridView
dataGridView1.DataSource = listStudents;
}
}
}

4进一步修改UI显示

    //将数据显示到dataGridView
            dataGridView1.DataSource = listStudents;
            //取消第一列
            dataGridView1.RowHeadersVisible = false;
            //单击时,行选中
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

5新增

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml; namespace XML_GridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//1创建xml对象
XmlDocument doc = new XmlDocument();
private void Form1_Load(object sender, EventArgs e)
{
//1创建存储对象集合
List<Student> listStudents = new List<Student>(); //开始读取数据 赋值给集合中的对象
XmlDocument doc = new XmlDocument();
doc.Load("Person.xml"); //获得根节点
XmlElement person = doc.DocumentElement;
//获取根节点的子节点
XmlNodeList students = person.ChildNodes; foreach (XmlNode item in students)
{
//从xml文档中将数据赋值给集合中的Student对象
listStudents.Add(new Student(){
ID = Convert.ToInt32(item.Attributes["ID"].Value),
Name = item["Name"].InnerText,
Age = Convert.ToInt32(item["Age"].InnerText),
Gender = Convert.ToChar(item["Gender"].InnerText)
});
} //将数据显示到dataGridView
dataGridView1.DataSource = listStudents;
//取消第一列
dataGridView1.RowHeadersVisible = false;
//单击时,行选中
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.ClearSelection();
} #region 00 单击确定按钮触发事件
private void btnAdd_Click(object sender, EventArgs e)
{
int Id;
if (!int.TryParse(txtID.Text.Trim(), out Id))
{
MessageBox.Show("ID请输入正整数");
return;
}
if (File.Exists("Person.xml"))
{
//判断student ID是否存在
if (IsExist())
{
MessageBox.Show("ID已存在");
return;
}
//添加节点
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
AddNode(person);
}
else
{
//创建文件--同时把当前页面的Student信息保存到文件中
CreateFile();
}
doc.Save("Person.xml");
//刷新界面
Form1_Load( sender, e);
MessageBox.Show("保存成功!");
}
#endregion
#region 01创建文件 public void CreateFile()
{
//1创建声明信息
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//2创建person根节点
XmlElement person = doc.CreateElement("Person");
doc.AppendChild(person);
AddNode(person);
}
#endregion #region 02添加节点
private void AddNode(XmlElement person)
{
//3创建Student子节点
XmlElement student = doc.CreateElement("Student");
person.AppendChild(student);
//4Student子节点设置属性Id
student.SetAttribute("ID", txtID.Text.Trim());
//5Student添加Name节点
XmlElement name = doc.CreateElement("Name");
name.InnerText = txtName.Text.Trim();
student.AppendChild(name);
//5Student添加Age节点
XmlElement age = doc.CreateElement("Age");
age.InnerText = txtAge.Text.Trim();
student.AppendChild(age);
//6Student添加Gender节点
XmlElement gender = doc.CreateElement("Gender");
if (RDMan.Checked == true)
{
gender.InnerText = "男";
}
else
{
gender.InnerText = "女";
}
student.AppendChild(gender);
}
#endregion #region 03判断studentID是否存在
public bool IsExist()
{
doc.Load("Person.xml");
//1 获取根节点
XmlElement person = doc.DocumentElement;
//2 获取所有student的属性
XmlNodeList students = person.ChildNodes;
List<string> listID = new List<string>();
foreach (XmlNode item in students)
{
listID.Add(item.Attributes["ID"].Value);
}
if (listID.Contains(txtID.Text))
{
return true;
}
return false;
}
#endregion }
}

新增

6 删除

首先添加一个右击菜单,弹出删除按钮

 #region 04删除按钮触发事件
private void Delete_Click(object sender, EventArgs e)
{
//1获得当前选中行的id
string id = dataGridView1.SelectedRows[].Cells[].Value.ToString();
//2 根据ID进行删除
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
XmlNode student = person.SelectSingleNode("/Person/Student[@ID=" + id + "]");
person.RemoveChild(student); doc.Save("Person.xml");
LoadData();
MessageBox.Show("删除成功");
}
#endregion

删除

7修改,添加行双击事件

        #region 05双击后给文本框赋值
private void Row_DoubleClick(object sender, EventArgs e)
{
//将选中行的数据赋值给文本框
txtID.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
txtName.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
txtAge.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
string gender = dataGridView1.SelectedRows[].Cells[].Value.ToString();
if (gender == "男")
{
RDMan.Checked = true;
}
else
{
RDFemale.Checked = true;
}
}
#endregion #region 06单击确定按钮--进行修改
private void btnUpdate_Click(object sender, EventArgs e)
{
//1ID不可更改
if (txtID.Text != dataGridView1.SelectedRows[].Cells[].Value.ToString())
{
MessageBox.Show("ID不可更改");
return;
} //2 根据ID进行更新
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
XmlNode student = person.SelectSingleNode("/Person/Student[@ID=" + txtID.Text + "]");
student["Name"].InnerXml = txtName.Text;
student["Age"].InnerXml = txtAge.Text;
student["Gender"].InnerXml = RDMan.Checked ? "男" : "女";
doc.Save("Person.xml");
LoadData();
MessageBox.Show("修改成功");
}
#endregion

修改


总代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml; namespace XML_GridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//1创建xml对象
XmlDocument doc = new XmlDocument();
private void Form1_Load(object sender, EventArgs e)
{
LoadData();
} #region 000DataGridView加载数据
private void LoadData()
{
//1创建存储对象集合
List<Student> listStudents = new List<Student>(); //开始读取数据 赋值给集合中的对象
XmlDocument doc = new XmlDocument();
doc.Load("Person.xml"); //获得根节点
XmlElement person = doc.DocumentElement;
//获取根节点的子节点
XmlNodeList students = person.ChildNodes; foreach (XmlNode item in students)
{
//从xml文档中将数据赋值给集合中的Student对象
listStudents.Add(new Student()
{
ID = Convert.ToInt32(item.Attributes["ID"].Value),
Name = item["Name"].InnerText,
Age = Convert.ToInt32(item["Age"].InnerText),
Gender = Convert.ToChar(item["Gender"].InnerText)
});
} //将数据显示到dataGridView
dataGridView1.DataSource = listStudents;
//取消第一列
dataGridView1.RowHeadersVisible = false;
//单击时,行选中
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.ClearSelection();
}
#endregion #region 00 单击确定按钮触发事件
private void btnAdd_Click(object sender, EventArgs e)
{
int Id;
if (!int.TryParse(txtID.Text.Trim(), out Id))
{
MessageBox.Show("ID请输入正整数");
return;
}
if (File.Exists("Person.xml"))
{
//判断student ID是否存在
if (IsExist())
{
MessageBox.Show("ID已存在");
return;
}
//添加节点
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
AddNode(person);
}
else
{
//创建文件--同时把当前页面的Student信息保存到文件中
CreateFile();
}
doc.Save("Person.xml");
//刷新界面
LoadData();
MessageBox.Show("保存成功!");
}
#endregion
#region 01创建文件 public void CreateFile()
{
//1创建声明信息
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//2创建person根节点
XmlElement person = doc.CreateElement("Person");
doc.AppendChild(person);
AddNode(person);
}
#endregion #region 02添加节点
private void AddNode(XmlElement person)
{
//3创建Student子节点
XmlElement student = doc.CreateElement("Student");
person.AppendChild(student);
//4Student子节点设置属性Id
student.SetAttribute("ID", txtID.Text.Trim());
//5Student添加Name节点
XmlElement name = doc.CreateElement("Name");
name.InnerText = txtName.Text.Trim();
student.AppendChild(name);
//5Student添加Age节点
XmlElement age = doc.CreateElement("Age");
age.InnerText = txtAge.Text.Trim();
student.AppendChild(age);
//6Student添加Gender节点
XmlElement gender = doc.CreateElement("Gender");
if (RDMan.Checked == true)
{
gender.InnerText = "男";
}
else
{
gender.InnerText = "女";
}
student.AppendChild(gender);
}
#endregion #region 03判断studentID是否存在
public bool IsExist()
{
doc.Load("Person.xml");
//1 获取根节点
XmlElement person = doc.DocumentElement;
//2 获取所有student的属性
XmlNodeList students = person.ChildNodes;
List<string> listID = new List<string>();
foreach (XmlNode item in students)
{
listID.Add(item.Attributes["ID"].Value);
}
if (listID.Contains(txtID.Text))
{
return true;
}
return false;
}
#endregion #region 04删除按钮触发事件
private void Delete_Click(object sender, EventArgs e)
{
//1获得当前选中行的id
string id = dataGridView1.SelectedRows[].Cells[].Value.ToString();
//2 根据ID进行删除
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
XmlNode student = person.SelectSingleNode("/Person/Student[@ID=" + id + "]");
person.RemoveChild(student); doc.Save("Person.xml");
LoadData();
MessageBox.Show("删除成功");
}
#endregion #region 05双击后给文本框赋值
private void Row_DoubleClick(object sender, EventArgs e)
{
//将选中行的数据赋值给文本框
txtID.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
txtName.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
txtAge.Text = dataGridView1.SelectedRows[].Cells[].Value.ToString();
string gender = dataGridView1.SelectedRows[].Cells[].Value.ToString();
if (gender == "男")
{
RDMan.Checked = true;
}
else
{
RDFemale.Checked = true;
}
}
#endregion #region 06单击确定按钮--进行修改
private void btnUpdate_Click(object sender, EventArgs e)
{
//1ID不可更改
if (txtID.Text != dataGridView1.SelectedRows[].Cells[].Value.ToString())
{
MessageBox.Show("ID不可更改");
return;
} //2 根据ID进行更新
doc.Load("Person.xml");
XmlElement person = doc.DocumentElement;
XmlNode student = person.SelectSingleNode("/Person/Student[@ID=" + txtID.Text + "]");
student["Name"].InnerXml = txtName.Text;
student["Age"].InnerXml = txtAge.Text;
student["Gender"].InnerXml = RDMan.Checked ? "男" : "女";
doc.Save("Person.xml");
LoadData();
MessageBox.Show("修改成功");
}
#endregion }
}

步步为营-23-通过GridView实现增删改的更多相关文章

  1. 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子

    备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...

  2. 【gridview增删改查】数据库查询后lodop打印

    ASP.NET中使用gridview可以很容易的把需要的数据动态显示在前台,还可以在表格里加入列进行增删改查,每次点击的时候重新加载数据,gridview也提供了分页等功能,还有一些模版让显示在前台的 ...

  3. python入门23 pymssql模块(python连接sql server增删改数据 )

    增删改数据必须connect.commit()才会生效 回滚函数 connect.rollback() 连接数据库 ''' dinghanhua sql server增删改 ''' import py ...

  4. nodejs+easyui(抽奖活动后台)增删改查

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAAJACAIAAAD97KNZAAAgAElEQVR4nO2daXxb5Z2o7w+dO1/ufL ...

  5. sqlHelper做增删改查,SQL注入处理,存储值,cookie,session

    一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...

  6. Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]

    [虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...

  7. MYSQL的常用命令和增删改查语句和数据类型

    连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...

  8. MYSQL的常用命令和增删改查语句和数据类型【转】

    连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...

  9. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

随机推荐

  1. 函数和常用模块【day04】:函数的非固定参数(三)

    本节内容 1.概述 2.默认参数 3.参数组 4.总结 一.概述 在上一篇博客中我已经写了,位置参数和关键字参数,下面我们来谈谈默认参数和参数组 二.默认参数 默认参数指的是,我们在传参之前,先给参数 ...

  2. c# 打印 bartender

    参考: 官网  https://www.seagullscientific.com/label-software/barcode-label-design-and-printing 文章 http:/ ...

  3. canvas实现时钟

    最近在看新浪体育网球频道(http://sports.sina.com.cn/tennis/)的时候,看到了下面的劳力士广告的时钟是用canvas做的,于是也实现了一个简单的canvas时钟.直接上代 ...

  4. golang struct tag

    golang可以在struct中的每个字段,写上一个tag.这个tag可以通过反射的机制获取到,最常用的场景就是json序列化和反序列化 package main import ( "enc ...

  5. ASP.NET MVC深入浅出(被替换)

    一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模式,ViewState功不可没,通过的控件的 ...

  6. VUE2.0 饿了吗视频学习笔记(二):新版本添加路由和显示Header

    https://gitee.com/1981633/vue_study.git 源码下载地址,随笔记动态更新中 webpack.dev.conf.js中添加两段代码 'use strict' cons ...

  7. mysql手工注入总结

    mysql -u 用户名 -p 密码 -h IP地址 show databases;   查看数据库 select version(); php注入的版本号 use database(表名): sho ...

  8. 最新Linux系统Ubuntu16.04搭建HUSTOJ(LAMP环境)

    应该跟着下面的步骤就OK了吧! 1.升级软件库,更新软件 打开终端 输入 sudo apt-get update sudo apt-get upgrade 2.安装mysql5.7 (注意:mysql ...

  9. 如何成为软件测试职场“头号玩家”,月入10k+

    最近看了一部电影,叫<头号玩家>,电影挺不错的,延伸到自己的测试职业生涯,其实在我们的测试职场,也是存在头号玩家的,但并不是真的在玩,而是在努力工作. 不管是什么游戏,如果要玩通关升级,那 ...

  10. for XX in XX结构

    这是一个循环!! in 后面可跟range,enumerate,序列等 for i in [(1,2),(2,3),("gege",5)]: print (i) 执行结果: (1, ...