繁体   English   中英

从具有XML列的表中填充列表框

[英]Populate Listbox from a table having a XML column

遇到了一个问题,我从一天开始一直在努力。 我有一个具有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东西,但无法相应地填充列表框。

专家请指导。

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

我不了解您的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()));

然后,您可以轻松地将个人对象绑定到列表,或绑定到列表所需的其他对象。 注意,出于测试目的,我仅绑定第一行的第二列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM