新人急问:datagridview如何读写数据到XML文件

LoveInterMilan 2008-11-29 01:14:58
急问:datagridview如何读写数据到XML文件
先是把datagridview的数据写入XML文件,然后还能读取XMl文件到datagridview上
...全文
696 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglei1111111111 2011-05-31
  • 打赏
  • 举报
回复
ding
net5i 2008-11-29
  • 打赏
  • 举报
回复
“XML的节点是怎么得到的啊?”
--------xml节点以及文档是自己创建的

XML结构是自己先写好的吗?
--------不是先写好的,而是预先定义好的

建议搂主可以自己去学习一下XML文档操作,以及XPath的有关资料
LoveInterMilan 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 net5i 的回复:]

简单的帮搂主搞了下伪代码,可以作为参考:

private void SaveToXml()
{
this.CreateColumnXmlNode();
for (int index = 0; index < this.dataGridView1.Rows.Count; index++)
{
DataGridViewRow row = this.dataGridView1.Rows[index];
this.CreateXmlNode(row);
}
}

private void CreateColumnXmlNode()
{
for (int index = 0; index < this.dataGridView1…
[/Quote]
俺是个新人,XML的节点是怎么得到的啊?XML结构是自己先写好的吗?
net5i 2008-11-29
  • 打赏
  • 举报
回复
这样搂主才能自定义生成和读取的XML文件格式
bloodish 2008-11-29
  • 打赏
  • 举报
回复

DataTable tb = this.dataGridView1.DataSource as DataTable;
if(tb != null)
{
tb.WriteXml(@"C:\table.xml",true);
return;
}
DataView dv = this.dataGridView1.DataSource as DataView;
if(dv != null)
{
dv.Table.WriteXml(@"C:\table.xml",true);
return;
}
IList list = this.dataGridView1.DataSource as IList;
if(list != null)
{
//to do,如果是IList,就要你自己想办法导出了
//XmlDocument or XmlWriter都可以考虑
}

net5i 2008-11-29
  • 打赏
  • 举报
回复
不好意思,行的节点结构搞错了:
<Rows>
<Item Cell1 = "内容" Cell2 = "内容" Cell3 = "内容" ..../>
......
</Rows>
其中,Cell1 Cell2 Cell3需要动态生成
half_bucket 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 LoveInterMilan 的回复:]
引用 2 楼 wuyq11 的回复:
DataSet set = new DataSet();
set.ReadXml(@"C:\XML1.xml");
dataGridView.DataSource = set.Tables[0];

set.WriteXml(@"C:\XML1.xml");

我是这样写的啊
但是老出错啊
说找不到Tables[0]的第0行
主要难点还是怎样把datagridview的数据写入一个新的XML文件中
[/Quote]

====================================================
说找不到Tables[0]的第0行,DataSet中没有内容,你判断一下就ok:
if(set==null)
{
//Not doing anything
}
or
if(set.Tables[0].Rows.count > 0)
{
//doing something here
}

主要难点还是怎样把datagridview的数据写入一个新的XML文件中,
用ExcuteXmlReader去获取,这个在vs2005中已具备。
net5i 2008-11-29
  • 打赏
  • 举报
回复

简单的帮搂主搞了下伪代码,可以作为参考:

private void SaveToXml()
{
this.CreateColumnXmlNode();
for (int index = 0; index < this.dataGridView1.Rows.Count; index++)
{
DataGridViewRow row = this.dataGridView1.Rows[index];
this.CreateXmlNode(row);
}
}

private void CreateColumnXmlNode()
{
for (int index = 0; index < this.dataGridView1.Columns.Count; index++)
{
string szHeaderText = this.dataGridView1.Columns[index].HeaderText;
//
//.....保存列标题和索引到xml节点的对应属性中
}
}

private void CreateRowXmlNode(DataGridViewRow row)
{
for (int index = 0; index < row.Cells.Count; index++)
{
DataGridViewCell cell = row.Cells[index];
//
//.....保存单元格内容,以及单元格索引到xml节点的对应属性中
}
}

xml结构:
<DataGridViewData>
<Columns>
<Item Index = "索引" Text = "列标题"/>
......
</Columns>
<Rows>
<Item Index = "索引" Value = "内容"/>
......
</Rows>
</DataGridViewData>
LoveInterMilan 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
DataSet set = new DataSet();
set.ReadXml(@"C:\XML1.xml");
dataGridView.DataSource = set.Tables[0];

set.WriteXml(@"C:\XML1.xml");
[/Quote]
我是这样写的啊
但是老出错啊
说找不到Tables[0]的第0行
主要难点还是怎样把datagridview的数据写入一个新的XML文件中
wuyq11 2008-11-29
  • 打赏
  • 举报
回复
DataSet set = new DataSet();
set.ReadXml(@"C:\XML1.xml");
dataGridView.DataSource = set.Tables[0];

set.WriteXml(@"C:\XML1.xml");

net5i 2008-11-29
  • 打赏
  • 举报
回复
循环写入和读取就可以的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧