我想使用一个简单的 xml 文件填充我的 DropDownList:
<?xml version="1.0" encoding="utf-8" ?>
<Databases>
<Database>foo</Database>
<Database>bar</Database>
<Database>baz</Database>
</Databases>
我的 XPath 是
/Databases/Database
我的下拉列表呈现为:
<select name="databaseDropDownList" id="databaseDropDownList">
<option selected="selected" value="System.Web.UI.WebControls.XmlDataSourceNodeDescriptor">System.Web.UI.WebControls.XmlDataSourceNodeDescriptor</option>
<option value="System.Web.UI.WebControls.XmlDataSourceNodeDescriptor">System.Web.UI.WebControls.XmlDataSourceNodeDescriptor</option>
<option value="System.Web.UI.WebControls.XmlDataSourceNodeDescriptor">System.Web.UI.WebControls.XmlDataSourceNodeDescriptor</option>
</select>
我应该如何提取文本?
谢谢
最佳答案
我记不清了,但我认为 XmlDataSource 中有一个错误阻止您绑定(bind)到 xml 节点的值。它仅适用于属性。如果我对此有误,请纠正我。您需要对 XML 文件稍作修改:
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string xml =
@"<?xml version=""1.0"" encoding=""utf-8"" ?>
<Databases>
<Database name=""foo"" />
<Database name=""bar"" />
<Database name=""baz"" />
</Databases>";
databasesSource.Data = xml;
databasesSource.DataBind();
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="databases" runat="server" DataSourceID="databasesSource" DataValueField="name" DataTextField="name" />
<asp:XmlDataSource ID="databasesSource" runat="server" XPath="/Databases/Database" />
</div>
</form>
</body>
</html>
请注意,我添加了 name 属性,而不是直接使用节点的值。
如果您不能修改原始 XML 文件的结构,您可以使用 TransformFile 对其应用 XSLT 转换。 post 中描述的属性.
关于c# - 从 XmlDataSource 填充 DropDownList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631365/