【问题标题】:Populate Listbox from a table having a XML column从具有 XML 列的表中填充列表框
【发布时间】:2013-07-01 11:53:49
【问题描述】:

遇到了一个问题,我从一天开始就在努力解决这个问题。 我有一个包含 varchar 列和 XML 列的表。架构如下:

create table dbo.StandardView(
Name varchar(50),
Fields xml)

我插入了一条记录如下:

insert into dbo.StandardView
values('Standard',N'<fieldname>FirstName,SecondName,ThirdName</fieldname>')

我需要用以下实体填充一个列表框:

FirstName
SecondName
ThirdName

填充列表框的代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            PopulateValues();
        }
    }

public void PopulateValues()
{
    SqlDataAdapter da = new SqlDataAdapter("select * from dbo.StandardView", xconn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    lstBox.DataSource = dt;
    lstBox.DataTextField = dt.Columns[1].ToString();
    lstBox.DataValueField = dt.Columns[1].ToString();
    lstBox.DataBind();

}

上面的代码将整个 xml 列以字符串格式放在列表框中,非常明显。

我尝试了一些 xmlserializer、deserializer 和 xmlreader 的东西,但无法相应地填充列表框。

请高手指导。

【问题讨论】:

    标签: c# asp.net sql xml


    【解决方案1】:

    使用属性 FirstName、SecondName、ThirdName 创建一个类,并在提取 xml 列时创建该类的列表并使用 xml 数据填充该列表,然后将该列表绑定到列表框。

    【讨论】:

    • 我会试试这个东西并更新线程..谢谢你的回复
    【解决方案2】:

    我不懂你的 XML,但是如果数据是这样的:

    <Person>
        <FirstName>John</FirstName>
        <SecondName>Smith</SecondName>
        <ThirdName>Rowle</ThirdName>
    </Person>
    

    你创建一个像这样的对象:

    [XmlRoot()]
    public class Person
    {
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public string ThirdName { get; set; }
    }
    

    然后你可以让它与XMLSerializer类一起工作。

    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    Person p = (Person)serializer.Deserialize(new StringReader(dt.Rows[0][1].ToString()));
    

    然后,您可以轻松地将您的 person 对象绑定到您的列表,或者您需要将其绑定到的任何其他对象。请注意,出于测试目的,我只绑定了第一行的第二列。

    【讨论】:

    • Escano:谢谢你的回复队友..但是一个XML标签可以有多个项目..你好,你好,酷...无论如何我会和你一起去的回复和上面由 Azhar 发布的回复,让我们看看..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2019-03-21
    • 2011-02-17
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多