做了个小的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文件,并导入的更多相关文章

  1. 代码注释模板(把内容保存为xml文件,导入eclipse中即可)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...

  2. 提取数据表保存为XML文件

    //连接数据库 SqlConnection con = new SqlConnection("server=****;database=****;uid=sa;pwd=********&qu ...

  3. mybatis mapper xml文件的导入方式和查询方式

    mybatis mapper xml文件的导入方式和查询方式 ssm框架 Mybatis  mapper与SQLSession的关系 每个基于MyBatis的应用都是以一个SqlSessionFact ...

  4. List<T>保存为XML文件

    今天我们学习怎样把List<T>写成一个XML文件保存起来.因为我们在做动态网站开发时,需要对一些不太常变化的数据产生为XML文件,让程序直接去读取,而不是每次是SQL数据库取. 为了解决 ...

  5. Android吧数据保存成xml文件

    public class MainActivity extends Activity { private List<Person> persons; @Override protected ...

  6. python文件目录遍历保存成xml文件代码

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

  7. .net中xml文件的导入使用(包括创建xml和导入xml)

    上次有说到.net 创建xml文件的方法(一种固定方式,一种动态方法),这次记录一下怎样导入xml文件 1.导入xml文件的方法 1)xml文件格式

  8. 启动项目时,mapper.xml文件没有导入

    原因分析:绑定的statement没有发现,原因是只有mapper接口的java文件,没有xml文件 解决方法:需要在pom文件中进行配置 <!-- 如果不添加此节点mybatis的mapper ...

  9. zabbix高级玩法之通过xml文件一次性导入

    author:headsen  chen date: 2018-11-10  10:08:38 背景:zabbix的硬件监控架构已经部署完成,接下来就是创建主机这一步,2400台主机如果采用一台台的创 ...

随机推荐

  1. Android零基础入门第20节:CheckBox和RadioButton使用大全

    原文:Android零基础入门第20节:CheckBox和RadioButton使用大全 本期先来学习Button的两个子控件,无论是单选还是复选,在实际开发中都是使用的较多的控件,相信通过本期的学习 ...

  2. IntelliJ IDEA热部署

    如何对webAPP实施热部署:     首先修改Configurations里面的       其次在设置中修改     使用debug模式运行即可

  3. CPU的最小执行单位是线程,协程不需要qt支持...直接用现成的协程库就行了

    协程也就在I/O操作上才有优势,Qt事件循环,本事很多I/O已经是异步了,利用好异步(虽然都说异步有点反人类思维).因为CPU的执行最小单位是线程,协程也只是在其之上又调度而已. 我的意思是利用好异步 ...

  4. Dependency Injection 筆記 (2)

    续上集,接着要说明如何运用 DI 来让刚才的范例程序具备执行时期切换实现类型的能力. (本文摘自電子書<.NET 依賴注入>) 入门范例—DI 版本 为了让 AuthenticationS ...

  5. Vista之前的版本,默认本地登陆用户都以管理员权限启动程序

    Vista之前的版本,默认本地登陆用户都以管理员权限启动程序,之后的OS版本默认都没有管理员权限,需要用户提权才能做某些操作,否则需要管理员权限的操作都会失败MSSQL是用户名账号连接,Socket方 ...

  6. vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)

    背景      vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用.      在vista下,系统开启了UAC,如果你的 ...

  7. 15个非常棒的jQuery无限滚动插件【瀑布流效果】

    现在,最热门的网站分页趋势之一是jQuery的无限滚动(也即瀑布流).如果你碰巧观察Pinterest的网站,如Facebook,Twitter和deviantART的,你会发现无限滚动的动作,当旧的 ...

  8. Hadoop集群(第1期)CentOS安装配置

    1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...

  9. GO方法与接口

    Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者(receiver)的函数,re ...

  10. SYN2136型 北斗NTP网络时间服务器

    SYN2136型  北斗NTP网络时间服务器 北斗NTP网络时间服务器时间服务器使用说明视频链接: http://www.syn029.com/h-pd-109-0_310_36_-1.html 请将 ...