我有一个带有DropDownList的ASP.NET应用程序,我希望它填充我的XML文件值。 我如何使用我的XML,为XML中的每个Value创建一个新项目。
我的XML文件:
<?xml version="1.0" standalone="yes" ?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="resources">
<xs:complexType>
<xs:sequence>
<xs:element name="Werk" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<resources>
<Werk>foo1</Werk> <!-- The first Value-->
</resources>
<resources>
<Werk>foo2</Werk> <!-- The second Value-->
</resources>
<resources>
<Werk>foo3</Werk> <!-- The third Value-->
</resources>
</NewDataSet>
在我的ASPX中:
<asp:XmlDataSource ID="XMLData" runat="server" DataFile="~/App_Data/Werke.xml" />
<asp:DropDownList ID="dropWerk" runat="server" Width="245px" />
我需要一种使用XML文件中的数据填充DropDownList的方法
塔拉索夫
CS文件:
private void BindXML()
{
XmlDocument xmldoc = XMLData.GetXmlDocument();
using (DataSet ds = new DataSet())
{
ds.ReadXml(XMLData.DataFile);
dropWerk.DataSource = ds;
dropWerk.DataTextField = "Werk";
dropWerk.DataBind();
}
}
答案 0 :(得分:3)
第一种方法: 将xml存储在数据集中,然后将其分配给dropdownlist
DataSet ds=new DataSet();
ds.ReadXml("xmlfile.xml");
dropWerk.DataSource = ds; or dropWerk.DataSource = ds.Tables[0];
dropWerk.TextField = "field name"; // field to display in dropdown
dropWerk.ValueField="Value Field";
dropWerk.DataBind();
更新答案: * 第二种方法: *将逐个值添加到下拉列表项中 如果我从评论中理解您的问题,则需要将xml值添加到列表项 试试这个
XmlDocument xdoc=new XmlDocument();
xdoc.Load("xmlfile.xml");
XmlNodeList node = xdoc.SelectSingleNodes("/NewDataSet/resources/");
foreach(XmlNode n in node )
{
ListItem l = new ListItem();
l.Text = n.InnerXml.ToString();
drpWerk.Items.Add(l);
}
drpWerk.DataBind();
答案 1 :(得分:0)
试试这个:
<script runat="server">
protected void dropWerk_OnSelectedIndexChanged(object sender, System.EventArgs e) {
Label1.Text = dropWerk.SelectedItem.Text.ToString();
}
</script>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/YourXmlFile.xml"></asp:XmlDataSource>
<asp:DropDownList ID="dropWerk" runat="server" Width="245px" DataSourceID="XmlDataSource1" OnSelectedIndexChanged="dropWerk_OnSelectedIndexChanged" />
你可能想在dropWerk_OnSelectedIndexChanged处理程序中放置一个断点并检查dropWerk.SelectedItem以获取如何更好地使用传递值的想法
答案 2 :(得分:0)
解决方案:
private void BindXML()
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("~/App_Data/Werke.xml"));
XmlNodeList nodes = xmldoc.GetElementsByTagName("Werk");
foreach (XmlNode n in nodes)
{
ListItem l = new ListItem();
l.Text = n.InnerXml.ToString();
dropWerk.Items.Add(l);
}
dropWerk.DataBind();
}
在Page_Load方法中绑定此方法,它可以工作:)