【发布时间】:2010-11-30 17:09:13
【问题描述】:
我正在尝试将 XML 节点的内容绑定到下拉列表,但没有成功。
最初,整个 XML 文档都绑定到一个转发器 - 这很完美,但是现在我需要根据“”节点中的子节点显示一个下拉列表,但我得到了数据在根级别是无效的。在 dropDownList 上的 DataBind() 方法上的第 1 行位置 1 错误消息。
谁能告诉我我做错了什么??
我使用的代码 sn-p 是:
IXPathNavigable x = (IXPathNavigable)e.Item.DataItem;
XPathNavigator questionNode = x.CreateNavigator();
string question = questionNode.SelectSingleNode("questionText").ToString();
//string title = xePage.SelectSingleNode("q").InnerText;
Literal questionText = (Literal)e.Item.FindControl("litQuestionText");
questionText.Text = question;
Panel iconDiv = (Panel)e.Item.FindControl("divIcon");
iconDiv.CssClass = string.Format("icon {0}", questionNode.SelectSingleNode("iconType"));
Panel sliderPanel = (Panel)e.Item.FindControl("pnlSlider");
DropDownList answerDropDown = (DropDownList)e.Item.FindControl("ddlAnswer");
TextBox answerText = (TextBox)e.Item.FindControl("txtAnswer");
switch (questionNode.SelectSingleNode("answerType").ToString())
{
case "d":
sliderPanel.Visible = false;
answerText.Visible = false;
answerDropDown.Visible = true;
XmlDataSource answersList = new XmlDataSource();
answersList.Data = questionNode.Select("answers").ToString();
Response.Write(answersList.ToString());
//XPathNodeIterator answers = questionNode.Select("answers");
//answers.AsQueryable();
answersList.ID = questionNode.SelectSingleNode("questionId").ToString();
answerDropDown.DataSource = answersList;
answerDropDown.DataTextField = "@display";
answerDropDown.DataValueField = "@value";
answerDropDown.DataBind();
break;
case "s":
sliderPanel.Visible = true;
answerText.Visible = false;
answerDropDown.Visible = false;
break;
case "t":
sliderPanel.Visible = false;
answerText.Visible = true;
answerDropDown.Visible = false;
break;
我使用的 XML 是这样的:
<questions>
<question>
<questionId>1</questionId>
<questionText>Question here?</questionText>
<iconType>a</iconType>
<answerType>d</answerType>
<answers>
<answer value="-3" display="Extremely badly"/>
<answer value="-2" display="Very badly"/>
<answer value="-1" display="Quite badly"/>
<answer value="0" display="Neither well nor badly"/>
<answer value="1" display="Quite well"/>
<answer value="2" display="Very well"/>
<answer value="3" display="Extremely well"/>
</answers>
</question>
<question>
<questionId>1</questionId>
<questionText>Question again here?</questionText>
<iconType>b</iconType>
<answerType>s</answerType>
<answers/>
</question>
</questions>
【问题讨论】:
-
好的,所以 XML 根本没有格式化...
-
如果有人知道如何正确添加 xml,我将不胜感激,因为显然代码标签不会剪切它......
-
代码,包括 xml,通过缩进至少 4 个空格来格式化。
-
谢谢山姆,现在似乎可以正常工作了...
标签: c# asp.net xml data-binding drop-down-menu