C# 如何使用ASP.NET应用程序中XML文件中的数据填充DropDownList
我有一个带有DropDownList的ASP.NET应用程序,我想用我的XML文件值填充它。 如何使用XML实现这一点,我需要为XML中的每个值创建一个新项 我的XML文件:C# 如何使用ASP.NET应用程序中XML文件中的数据填充DropDownList,c#,asp.net,xml,drop-down-menu,C#,Asp.net,Xml,Drop Down Menu,我有一个带有DropDownList的ASP.NET应用程序,我想用我的XML文件值填充它。 如何使用XML实现这一点,我需要为XML中的每个值创建一个新项 我的XML文件: <?xml version="1.0" standalone="yes" ?> <NewDataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata
<?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>
<asp:XmlDataSource ID="XMLData" runat="server" DataFile="~/App_Data/Werke.xml" />
<asp:DropDownList ID="dropWerk" runat="server" Width="245px" />
private void BindXML()
{
XmlDocument xmldoc = XMLData.GetXmlDocument();
using (DataSet ds = new DataSet())
{
ds.ReadXml(XMLData.DataFile);
dropWerk.DataSource = ds;
dropWerk.DataTextField = "Werk";
dropWerk.DataBind();
}
}
试试这个:
<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" />
受保护的void dropWerk_OnSelectedIndexChanged(对象发送方,System.EventArgs e){
Label1.Text=dropWerk.SelectedItem.Text.ToString();
}
您可能希望在dropWerk\u on SelectedIndexChanged处理程序中设置断点,并检查dropWerk。SelectedItem可了解如何更好地使用传递的值尝试以下操作:
<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" />
受保护的void dropWerk_OnSelectedIndexChanged(对象发送方,System.EventArgs e){
Label1.Text=dropWerk.SelectedItem.Text.ToString();
}
您可能希望在dropWerk\u on SelectedIndexChanged处理程序中设置断点,并检查dropWerk。SelectedItem可了解如何更好地使用传递的值第一种方法: 将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();
更新答案:
*第二种方法:*在dropdownlist项目中逐个添加值
如果我从注释中理解了您的问题,那么您希望将xml值添加到列表项中
试试这个
第一种方法: 将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();
更新答案:
*第二种方法:*在dropdownlist项目中逐个添加值
如果我从注释中理解了您的问题,那么您希望将xml值添加到列表项中
试试这个
解决方案:
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方法中绑定此方法,它将起作用:)解决方案:
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方法中,它会起作用:)到目前为止,您尝试了哪些代码,希望您不希望人们为您编写这些。您好,欢迎来到您的第二周!你自己试过什么?你有什么特别的代码有问题吗?@ChrisBint:看看我的CS文件代码。到目前为止你都尝试了哪些代码,希望你不希望别人为你写这些。你好,欢迎来到你的第二周!你自己试过什么?有没有什么特定的代码您遇到了麻烦?@ChrisBint:查看我的CS文件代码。我不知道您使用Label1.Text=dropWerk.SelectedItem.Text.ToString()是什么意思;因为我用XML值的值创建了一个新的ListItem::我不知道标签1.Text=dropWerk.SelectedItem.Text.ToString()是什么意思;因为我创建了一个值为XML值的新ListItem://@Tarasov现在您有什么问题?我想创建一个值为的新ListItem。如果我启动我的程序,我会得到一个空的DropDownList:(@Tarasov您的代码中有一个错误:ds.ReadXml(XMLData.DataFile);不要在ReadXml方法中指定xmldatasource,只需给出xmlfilename例如ds.ReadXml(“xmlfile.xml”);或查看我的答案。@Tarasov在哪个页面事件中调用绑定方法?@Tarasov如果代码似乎正确,请在ds.ReadXml(XMLData.DataFile)处放置一个断点;然后单击鼠标右键,查看包含数据的表或正在创建的表null@Tarasov现在您的问题是什么?我想创建一个新的ListItem,其值为。如果启动我的程序,我会得到一个空的DropDownList:(@Tarasov您的代码中有一个错误:ds.ReadXml(XMLData.DataFile);不要在readxml方法中指定xmldatasource,只需给出xmlfilename,例如ds.readxml(“xmlfile.xml”);或查看我的答案。@Tarasov在哪个页面事件中调用Bind method?@Tarasov如果代码似乎正确,请在ds.readxml(XMLData.DataFile)处放置一个断点;然后右键单击,查看包含数据的表或表为空