遇到了一个问题,我从一天起就开始尝试工作了。 我有一个包含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的东西,但是无法相应地填充列表框。
专家请指导。
答案 0 :(得分:1)
创建一个具有FirstName,SecondName,ThirdName属性的类,当您解压缩xml列时,然后创建此类的列表,并使用xml数据填充列表,然后将列表绑定到列表框。
答案 1 :(得分:0)
我不了解您的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()));
然后,您可以轻松地将人物对象绑定到列表,或者绑定到其他任何需要的对象。请注意,我仅绑定第一行的第二列用于测试目的。