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台主机如果采用一台台的创 ...
随机推荐
- Android零基础入门第20节:CheckBox和RadioButton使用大全
原文:Android零基础入门第20节:CheckBox和RadioButton使用大全 本期先来学习Button的两个子控件,无论是单选还是复选,在实际开发中都是使用的较多的控件,相信通过本期的学习 ...
- IntelliJ IDEA热部署
如何对webAPP实施热部署: 首先修改Configurations里面的 其次在设置中修改 使用debug模式运行即可
- CPU的最小执行单位是线程,协程不需要qt支持...直接用现成的协程库就行了
协程也就在I/O操作上才有优势,Qt事件循环,本事很多I/O已经是异步了,利用好异步(虽然都说异步有点反人类思维).因为CPU的执行最小单位是线程,协程也只是在其之上又调度而已. 我的意思是利用好异步 ...
- Dependency Injection 筆記 (2)
续上集,接着要说明如何运用 DI 来让刚才的范例程序具备执行时期切换实现类型的能力. (本文摘自電子書<.NET 依賴注入>) 入门范例—DI 版本 为了让 AuthenticationS ...
- Vista之前的版本,默认本地登陆用户都以管理员权限启动程序
Vista之前的版本,默认本地登陆用户都以管理员权限启动程序,之后的OS版本默认都没有管理员权限,需要用户提权才能做某些操作,否则需要管理员权限的操作都会失败MSSQL是用户名账号连接,Socket方 ...
- vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)
背景 vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用. 在vista下,系统开启了UAC,如果你的 ...
- 15个非常棒的jQuery无限滚动插件【瀑布流效果】
现在,最热门的网站分页趋势之一是jQuery的无限滚动(也即瀑布流).如果你碰巧观察Pinterest的网站,如Facebook,Twitter和deviantART的,你会发现无限滚动的动作,当旧的 ...
- Hadoop集群(第1期)CentOS安装配置
1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...
- GO方法与接口
Go语言没有沿袭传统面向对象编程中的诸多概念,比如继承.虚函数.构造函数和析构函数.隐藏的this指针等. 方法 Go 语言中同时有函数和方法.方法就是一个包含了接受者(receiver)的函数,re ...
- SYN2136型 北斗NTP网络时间服务器
SYN2136型 北斗NTP网络时间服务器 北斗NTP网络时间服务器时间服务器使用说明视频链接: http://www.syn029.com/h-pd-109-0_310_36_-1.html 请将 ...