首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用存储过程将XML路径直接读入绑定到DataGridView的DataSet?

使用存储过程将XML路径直接读入绑定到DataGridView的DataSet?
EN

Stack Overflow用户
提问于 2018-10-15 03:33:03
回答 2查看 393关注 0票数 1

我有以下存储过程:

代码语言:javascript
复制
CREATE Procedure [dbo].[usp_GetMyAlbumData]  
AS
    SELECT * 
    FROM [dbo].[tblAlbumDetails]  
    FOR XML PATH('AlbumDetail'), ROOT('AlbumDetails'), TYPE

我还需要弄清楚如何使用usp_ReportGetMyAlbumData生成的XML在datagridview中显示数据。

代码语言:javascript
复制
<AlbumDetails>
  <AlbumDetail>
    <MusicID>1</MusicID>
    <AlbumDesc>Jones</AlbumDesc>
    <AlbumDate>2018-10-13T15:55:49.843</AlbumDate>
    <AlbumPrice>4.0000</AlbumPrice>
  </AlbumDetail>
</AlbumDetails>

我想使用C#将这个XML结果(或usp_ReportGetMyAlbumData生成的任何其他XML结果)写到一个DataSet,这样我就可以将它绑定到一个DataGridView。

我需要编写什么代码才能用存储过程生成的XML中的数据填充dataset?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-15 06:23:48

请参阅下面的代码

代码语言:javascript
复制
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;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        const string FILENAME = @"c:\temp\test.xml";
        public Form1()
        {
            InitializeComponent();

            //data will be from the database a string
            //I'm reading fron a file for testing
            string xml = File.ReadAllText(FILENAME);

            DataTable dt = new DataTable();
            dt.Columns.Add("MusicID", typeof(int));
            dt.Columns.Add("AlbumDesc", typeof(string));
            dt.Columns.Add("AlbumDate", typeof(DateTime));
            dt.Columns.Add("AlbumPrice", typeof(decimal));

            XDocument doc = XDocument.Parse(xml);

            foreach(XElement album in doc.Descendants("AlbumDetail"))
            {
                dt.Rows.Add(new object[] {
                    (int)album.Element("MusicID"),
                    (string)album.Element("AlbumDesc"),
                    (DateTime)album.Element("AlbumDate"),
                    (decimal)album.Element("AlbumPrice")
                });
            }

            dataGridView1.DataSource = dt;

        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-10-15 10:05:53

代码语言:javascript
复制
string xml = "your xml here";
var ds = new DataSet();

using (var reader = new StringReader(xml))
{
    ds.ReadXml(reader);
}

dataGridView.DataSource = ds.Tables[0];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档