绑定SQL XML字段到gridview

本文关键字:gridview 字段 XML SQL 绑定 | 更新日期: 2023-09-27 18:12:01

嗨,我试图绑定一个SQL XML字段到我的gridview。

gridview应该是这样的:

edit-update | **Voucher Code** | **Quantity** | delete
    edit          vouc001             5        del
    edit          vouc002             57       del

SQL字段中的XML文件如下所示:

<ArrayOfCampaignVoucher xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CampaignVoucher>
<VouCode>Vouc002</VouCode>
<Qty>57</Qty>
</CampaignVoucher>
<CampaignVoucher xsi:nil="true" />
</ArrayOfCampaignVoucher>

我遇到过从本地XML文件绑定gridview的例子,像这样:

DataSet dataSet = new DataSet();
dataSet.ReadXml("~/App_Data/input.xml");
this.GridView1.DataMember = "fruit";
this.GridView1.DataSource = dataSet;
this.GridView1.DataBind();

我怎么能做到,当我的XML是在SQL服务器字段?谢谢。

绑定SQL XML字段到gridview

您需要连接到SQL Server数据库,读取包含XML的行并提取它。关于如何连接到SQL Server和读取数据的教程可以在这里找到,例如(你可以很容易地找到更多这些谷歌或搜索在这里SO)。

一旦你有你的XML作为字符串从数据库中读取,你可以很容易地设置流读取它并传递给DataSet。ReadXml方法——例如使用StringReader类。

让您了解程序流程的外观:

string connectionString = /* connection string to your database */
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    var command = new SqlCommand("SELECT xmlColumn FROM xmlTable", connection);
    using (var reader = command.ExecuteReader())
    {
        string xml = reader.GetString(0);
        DataSet dataSet = new DataSet();
        dataSet.ReadXml(new StringReader(xml));
        this.GridView1.DataMember = "fruit";
        this.GridView1.DataSource = dataSet;
        this.GridView1.DataBind();
    }
}

您可以将xml加载到stream并将其用作DataSet的源