100分 XML绑定到datagridview,给源码的分全给他

linwanhai 2010-10-21 04:09:33
XML结构如下
  <Headlist>
<HeadStruct>
<EBELN>38</EBELN>
<LIFNR>A48</LIFNR>
<FRGZU>X</FRGZU>
<DDSXZ>P</DDSXZ>
<Detaillist>
<DetailStruct>
<EBELP>00010</EBELP>
<LOEKZ />
<MATNR>LJDLQT19J00060</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>80</WERKS>
<LGORT>61</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
<DetailStruct>
<EBELP>00020</EBELP>
<LOEKZ />
<MATNR>LJD</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>8</WERKS>
<LGORT>81</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
</Detaillist>
</HeadStruct>
</Headlist>
...全文
176 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
烧饼vs馒头 2010-10-21
  • 打赏
  • 举报
回复
楼主提供的Xml文件中的内容是两个表格,所以我手动把这两张表合并为一张表,然后再付给DataGrid,下面是几个相关的函数,楼主可以借鉴一下.至于绑定DataGird我就不写出来了。
/// <summary>
/// 读取XML文件到DataSet
/// </summary>
/// <returns></returns>
DataSet GetDataFromXml()
{
string strpath = @"D:\working\oldFiles\WpfBrowserApp10\WpfBrowserApp10\datatset.xml";
DataSet ds = new DataSet();
ds.ReadXml(strpath);
return ds;
}

/// <summary>
/// 根据DS生成DataTable(用于存储Ds中三个Table中的数据)
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
DataTable CreateDataTable(DataSet ds)
{
DataTable dt = new DataTable();

for (int i = 0; i < ds.Tables.Count; i++)
{
foreach (DataColumn dc in ds.Tables[i].Columns)
{
if (dt.Columns.Contains(dc.ColumnName)) continue;
dt.Columns.Add(new DataColumn(dc.ColumnName,dc.DataType));
}
}
return dt;
}

/// <summary>
/// 把DS中3个Table的数据合成到一个DataTable中
/// </summary>
/// <param name="ds"></param>
/// <param name="dt"></param>
/// <returns></returns>
DataTable FillDataToDataTable(DataSet ds, DataTable dt)
{
for (int i = 0; i < ds.Tables.Count; i++)
{
for(int _i=0;_i<ds.Tables[i].Rows.Count;_i++)
{
DataRow drTmp = dt.NewRow();
dt.Rows.Add(drTmp);
for (int j = 0; j < ds.Tables[i].Columns.Count;j++ )
{
dt.Rows[_i][ds.Tables[i].Columns[j].ColumnName] = ds.Tables[i].Rows[_i][j];
}
}
}
return dt;
}
linwanhai 2010-10-21
  • 打赏
  • 举报
回复
弄好了 感谢各位 见者有分
五位数 2010-10-21
  • 打赏
  • 举报
回复
建议你用LINQ。这个很好做出来的。
shaoliang520xi 2010-10-21
  • 打赏
  • 举报
回复
有没有你做的效果图呀?
shaoliang520xi 2010-10-21
  • 打赏
  • 举报
回复
string url=Server.MapPath("~/XMLFile.xml");
DataSet ds = new DataSet();
ds.ReadXml(url);

this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();



<?xml version="1.0" encoding="utf-8" ?>
<Headlist>
<HeadStruct>
<EBELN>38</EBELN>
<LIFNR>A48</LIFNR>
<FRGZU>X</FRGZU>
<DDSXZ>P</DDSXZ>
<Detaillist>
<DetailStruct>
<EBELP>00010</EBELP>
<LOEKZ />
<MATNR>LJDLQT19J00060</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>80</WERKS>
<LGORT>61</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
<DetailStruct>
<EBELP>00020</EBELP>
<LOEKZ />
<MATNR>LJD</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>8</WERKS>
<LGORT>81</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
</Detaillist>
</HeadStruct>
</Headlist>
linwanhai 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shaoliang520xi 的回复:]

帮出来的效果要什么样的。你的XML是有结构形式的。
[/Quote]
一个头,多个细节,解析后把头和每条细节都整合成一条记录,有多个细节的话就是多条记录
sprc_lcl 2010-10-21
  • 打赏
  • 举报
回复
            DataTable dt = new DataTable();
dt.Columns.Add("EBELP");
dt.Columns.Add("LOEKZ");
dt.Columns.Add("MATNR");
dt.Columns.Add("MENGE");
dt.Columns.Add("MEINS");
dt.Columns.Add("WERKS");
dt.Columns.Add("LGORT");
dt.Columns.Add("ATWRT");

XmlDocument xd = new XmlDocument();
//xd.Load(filepath);
//xd.LoadXml(string);
XmlNodeList xnl = xd.GetElementsByTagName("DetailStruct");
foreach (XmlNode xn in xnl)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < dt.Columns.Count; i++)
{
string cName = dt.Columns[i].ColumnName;
XmlNode xnC = xn.SelectSingleNode(cName);
if (xnC != null) dr[cName] = xnC.InnerText;
}
dt.Rows.Add(dr);
}

this.dataGridView1.DataSource = dt;
shaoliang520xi 2010-10-21
  • 打赏
  • 举报
回复
帮出来的效果要什么样的。你的XML是有结构形式的。
wapdos 2010-10-21
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091231/00/4555a7a0-1ee6-4704-9d93-042ceb703633.html

源码下载地址: https://pan.quark.cn/s/0d6e3002ba51 ### IR2110中文资料知识点详述 #### 一、概述 IR2110是一种专为脉冲宽度调制应用而设计的高性能驱动集成电路,在各类功率转换设备中具有广泛的应用,特别是在需要实现隔离驱动的场景下表现出色。该芯片融合了光电隔离与电磁隔离的优势,能够达成快速响应并保持较小的物理尺寸,尤其适合用于中小功率的变换装置。 #### 二、IR2110内部结构与特点 **1. 内部结构** - **封装形式**:采用DIP14引脚封装。 - **内部组成**:由逻辑输入单元、电平平移单元以及输出保护单元这三个主要部构成。 - **悬浮电源**:借助自举电路实现,使得高端工作电压最高能够达到500V,支持±50V/ns的电压变化率。 - **工作电压范围**:逻辑电源电压范围为5~15V,输出电源端电压范围为10~20V,易于与其他逻辑电平进行匹配。 - **工作频率**:最高可达到500kHz。 - **功耗**:在15V条件下静态功耗仅为116mW。 - **延迟时间**:导通延迟120ns,关断延迟94ns。 - **峰值输出电流**:图腾柱输出峰值电流为2A。 **2. 特点** - **独立输入通道**:具备独立的低端和高端输入通道配置。 - **兼容性**:逻辑电源地与功率地之间允许±5V的偏移量,便于与TTL或CMOS电平进行匹配。 - **自举电源**:内置自举电源电路,有效减少驱动电源的数量,从而简化电路设计。 - **高dv/dt能力**:具有较强的dv/dt抑制能力,适合高频开关应用。 - **低功耗**:工作状态下功耗较低,有利于提升整体效率。 #### 三、高压侧...

111,129

社区成员

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

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

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