我有以下存储过程:
CREATE Procedure [dbo].[usp_GetMyAlbumData]
AS
SELECT *
FROM [dbo].[tblAlbumDetails]
FOR XML PATH('AlbumDetail'), ROOT('AlbumDetails'), TYPE
我还需要弄清楚如何使用usp_ReportGetMyAlbumData
生成的XML在datagridview中显示数据。
<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?
发布于 2018-10-15 06:23:48
请参阅下面的代码
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;
}
}
}
发布于 2018-10-15 10:05:53
string xml = "your xml here";
var ds = new DataSet();
using (var reader = new StringReader(xml))
{
ds.ReadXml(reader);
}
dataGridView.DataSource = ds.Tables[0];
https://stackoverflow.com/questions/52806361
复制相似问题