datagridview显示xml

chengangmax 2011-03-03 01:33:25
<?xml version="1.0" encoding="utf-16"?>
<HistoryData>
<ColumnOptions>
<Column Name="specNameColumn" Visible="True" Width="100" />
<Column Name="supplierColumn" Visible="False" Width="100" />
</ColumnOptions>
<Records>
<Row specNameColumn="Au" supplierColumn="" />
</Records>
</HistoryData>

如上xml,怎么用datagridview显示xml

我这样写

XmlReader xr = XmlReader.Create("HistoryData.xml");
while (xr.Read())
{
if (xr.LocalName == "Column")
{

xr.MoveToAttribute(0);

this.dataGridView1.Columns.Add("", xr.Value);

}
else if (xr.LocalName == "Row")
{
for (int i = 0; i < xr.AttributeCount; i++)
{
xr.MoveToAttribute(i);
this.dataGridView1.Rows.Add??????
}
}

列名是有了 可是那个行怎么添加 有没有更简单的方法? 弄了一天了 请教各位指点指点
...全文
328 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzzzxcv 2011-07-17
  • 打赏
  • 举报
回复
学些学习
chengangmax 2011-03-03
  • 打赏
  • 举报
回复
楼上正解 感激不尽
rjinliang 2011-03-03
  • 打赏
  • 举报
回复
两种方式。第一种直接用一个string数组把值存起来,第二种new一个datagridviewTextBoxCell,赋值后再添加到datagridview。
第一种:
else if (xr.LocalName == "Row")
{
string[] str = new string[xr.AttributeCount];
for (int i = 0; i < xr.AttributeCount; i++)
{
xr.MoveToAttribute(i);
str[i] = xr.Value.ToString();
}
this.dataGridView1.Rows.Add(str);
}
第二种:
else if (xr.LocalName == "Row")
{
DataGridViewRow dataGridViewRow = new DataGridViewRow();
for (int i = 0; i < xr.AttributeCount; i++)
{
xr.MoveToAttribute(i);
DataGridViewTextBoxCell dataGridViewCell = new DataGridViewTextBoxCell();
dataGridViewCell.Value = xr.Value;
dataGridViewRow.Cells.Add(dataGridViewCell);
}
this.dataGridView1.Rows.Add(dataGridViewRow);
}
sugarforever 2011-03-03
  • 打赏
  • 举报
回复
看起来ColumnOptions定义的是列。Records定义的是行。
那就遍历ColumnOptions的所有ChildNodes来创建列先。然后遍历Records的ChildNodes来AddRow。
chengangmax 2011-03-03
  • 打赏
  • 举报
回复
这似乎不行啊
gul_gui 2011-03-03
  • 打赏
  • 举报
回复

就是3楼这样,你这样将xml转换成dataset 然后取dataset里面的datatable ,gridview绑定dt就好了
DataSet ds = new DataSet();
ds.ReadXml(Environment.CurrentDirectory + @"/xml/report.xml");

chengangmax 2011-03-03
  • 打赏
  • 举报
回复
难道就没有谁详细讲解一下吗 来个大牛啊
chengangmax 2011-03-03
  • 打赏
  • 举报
回复
没明白你的意思
JingJingMoMoy 2011-03-03
  • 打赏
  • 举报
回复
LZ不用这麻烦 DataSet ds = new DataSet();
ds.ReadXml(Environment.CurrentDirectory + @"/xml/report.xml");
这样就可以得到DataSet 然后你取DataTable就可以


可以加入122365004我们共同进步
chengangmax 2011-03-03
  • 打赏
  • 举报
回复
这个row怎么写
bdmh 2011-03-03
  • 打赏
  • 举报
回复
读Records节点,然后遍历子节点,添加row

111,115

社区成员

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

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

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