DataGrid通过DataSet保存为xml文件,并导入

做了个小的DataGrid通过DataSet保存为xml_测试,DataGrid通过DataSet保存为xml_测试,通过dataSet.writeXML()和dataSet.readXML()方法完成了写入和自动读取,在一些大型项目中,xml作为一些不经常修改的配置文件的作用就显得很重要!也可以试验DataSet从数据库获取ROW,请见我的上一篇文章~
本项目为了结构逻辑更加清晰,使用了分层结构,包括一个class文件和form文件~
类ItemList代码<主要是一些ITEM属性和dataSet的writexml方法>:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;//使用dataset,对于form则自动引用此命名空间,类文件需手动添加 namespace WinDataSet_xml
{
public class ItemList
//class若没有publicl修饰符,则会出现错误
//1 Inconsistent accessibility: parameter type 'WinDataSet_xml.ItemList' is less accessible than
//method 'WinDataSet_xml.ItemManager.Show(WinDataSet_xml.ItemList)' E:\winform_shixun\WinDataSet_xml\WinDataSet_xml\ItemManager.cs 22 21 WinDataSet_xml {
private Array m_ItemId;
private Array m_ItemName;
private Array m_ItemInfo; private string m_ItemListFileName = "ItemList.xml";
private string m_XMLPath = AppDomain.CurrentDomain.BaseDirectory + "ItemList.xml"; private DataSet m_Ds = new DataSet(); #region get,set Property
public Array ItemID { get { return m_ItemId;} set {this.m_ItemId=value;} }
public Array ItemName{get {return m_ItemName;} set {this.m_ItemName=value;} }
public Array ItemInfo { get { return m_ItemInfo; } set { this.m_ItemInfo = value; } }
public DataSet ItemDS { get { return m_Ds; } set { this.m_Ds = value; } } public string ItemListFileName
{
get { return m_ItemListFileName; }
set
{
this.m_ItemListFileName = value;
if (value != null && !string.IsNullOrEmpty(value))
{
m_XMLPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + this.m_ItemListFileName;
} }
} public DataSet ItemDataSet
{
get
{
DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("Item属性表"));
ds.Tables[].Columns.Add(new DataColumn("Item序列号"));
ds.Tables[].Columns.Add(new DataColumn("Item姓名"));
ds.Tables[].Columns.Add(new DataColumn("Item信息"));
return ds;//get属性就是要return,否则出错!
}
}
#endregion public void SaveXML()
{
try
{
this.m_Ds.WriteXml(this.m_XMLPath);
}
catch(Exception ex)
{
throw(ex);
}
} public void LoadingXML()
{
try
{
this.m_Ds.ReadXml(this.m_XMLPath);
}
catch (Exception ex)
{
throw (ex);
}
} }
}
新建窗体ItemManager.cs代码<此窗体中含有dataGride控件及button控件>:
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; namespace WinDataSet_xml
{
public partial class ItemManager : Form
{
public ItemManager()
{
InitializeComponent();
} //同项目下的类可以互相引用,不同项目下需要using
private ItemList _Items; public void Show(ItemList items)
{
this._Items = items;
ItemList11.DataSource = _Items.ItemDS.Tables[];//ItemList1是网格Name,设置网格所显示的数据的数据源
//ItemList11.DataSource = _Items.ItemDataSet.Tables[0].DefaultView;
this.Show(); } private void button1_Click(object sender, EventArgs e)
{
for (int i = ; i < this.ItemList11.RowCount;i++ )
{
DataRow dr = null;
dr = this._Items.ItemDS.Tables[].NewRow();
dr[]=ItemList11.Rows[i].Cells[].Value;
dr[]=ItemList11.Rows[i].Cells[].Value;
dr[]=ItemList11.Rows[i].Cells[].Value; //this._Items.ItemDS.Tables[0].Rows.Add(dr);这个是一样的,不必写!写了反而不对
//this.ItemList11.DataSource = this._Items.ItemDS.Tables[0];
}
this._Items.SaveXML();
} private void button2_Click(object sender, EventArgs e)
{
this._Items.LoadingXML();
}
}
}
新建窗体Form_Base.cs<MdiParent>代码:
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; namespace WinDataSet_xml
{
public partial class Form_Base : Form
{
public Form_Base()
{
InitializeComponent();
} private void Button_Management_Click(object sender, EventArgs e)
{
ItemManager _ItemManager = new ItemManager();
_ItemManager.MdiParent = this;
_ItemManager.Dock = DockStyle.Fill; ItemList _ItemListDG = new ItemList();
DataSet _ds = _ItemListDG.ItemDataSet;
_ItemListDG.ItemDS = _ds;
// _ItemListDG.ItemDataSet = _ds; 只有get方法不能赋值 _ItemManager.Show(_ItemListDG);
}
}
}
测试效果图:

DataGrid通过DataSet保存为xml文件,并导入的更多相关文章
- 代码注释模板(把内容保存为xml文件,导入eclipse中即可)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...
- 提取数据表保存为XML文件
//连接数据库 SqlConnection con = new SqlConnection("server=****;database=****;uid=sa;pwd=********&qu ...
- mybatis mapper xml文件的导入方式和查询方式
mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...
- List<T>保存为XML文件
今天我们学习怎样把List<T>写成一个XML文件保存起来.因为我们在做动态网站开发时,需要对一些不太常变化的数据产生为XML文件,让程序直接去读取,而不是每次是SQL数据库取. 为了解决 ...
- Android吧数据保存成xml文件
public class MainActivity extends Activity { private List<Person> persons; @Override protected ...
- python文件目录遍历保存成xml文件代码
Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...
- .net中xml文件的导入使用(包括创建xml和导入xml)
上次有说到.net 创建xml文件的方法(一种固定方式,一种动态方法),这次记录一下怎样导入xml文件 1.导入xml文件的方法 1)xml文件格式
- 启动项目时,mapper.xml文件没有导入
原因分析:绑定的statement没有发现,原因是只有mapper接口的java文件,没有xml文件 解决方法:需要在pom文件中进行配置 <!-- 如果不添加此节点mybatis的mapper ...
- zabbix高级玩法之通过xml文件一次性导入
author:headsen chen date: 2018-11-10 10:08:38 背景:zabbix的硬件监控架构已经部署完成,接下来就是创建主机这一步,2400台主机如果采用一台台的创 ...
随机推荐
- SQLServer 可更新订阅数据冲突的一个原因
原文:SQLServer 可更新订阅数据冲突的一个原因 可更新订阅为什么有冲突? 可更新订阅中,当升级增加一个字段时,通常在发布服务器的发布数据库中增加,对表增加字段后,发布自动同步到订阅数据库中(复 ...
- jquery.tmpl.js使用外部 jQuery Template文件
$.get('/js/templates/filename.html', function(template) { $.tmpl(template, data).appendTo('#whatever ...
- C#try catch块
try..catch块的出现是为了异常处理. 格式为:try{...可能发生异常的代码...} catch{...对异常的处理...} finaly{...无论如何都会执行的代码..} 上面的只是一般 ...
- 系统休眠消息PBT_APMSUSPEND
https://msdn.microsoft.com/en-us/library/windows/desktop/aa372721(v=vs.85).aspx https://msdn.microso ...
- jquery中的ajax应用集锦
一,原生JS实现ajax: 1 2 3 4 5 6 7 8 9 10 11 function AjaxGet() { var xhrObj; ...
- 30+简约和平铺的WordPress复古主题
现在复古风格的设计非常流行,你可以快速建立属于自己的复古风格的网站.继续阅读下去,我们将展示给你一些精彩的WordPress复古主题. 多年来,网页设计师们纷纷用3D效果,纹理,噪声,渐变的灯光效果, ...
- GCC链接库的一个坑:动态库存在却提示未定义动态库的函数
背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...
- Python基础,day3
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数基本语法及特性 如何不重复代码,其实很 ...
- tkinter + cefpython 仿美团桌面程序
使用js开发桌面程序目前是一个趋势,Electron是其中一个佼佼者,网上也不乏很多文章.今天主要是来讲一下cefpython. 用python的朋友,特别使用过tkinter开发过界面的,一定会觉得 ...
- List集合总结,对比分析ArrayList,Vector,LinkedList
前面已经写了三篇关于Java集合的文章,包括: Java集合 ArrayList原理及使用 再说Java集合,subList之于ArrayList Java集合 LinkedList的原理及使用 关于 ...