ユーザーが領域を選択してからトピックを選択し、トピックに基づいて一連のコントロールがロードされる動的フォームを作成しています。フォームのオプションはすべて XML ファイルで定義されています。
私の問題は、XML をトラバースしているときに、作成したテキスト ファイルに 2 つある定義済みのコントロールに到達し、各コントロールを 2 回作成していることです。いくつかのコードを示してから説明する方がよいと思うので、ここに私のコードを示します。
<?xml version="1.0" encoding="utf-8" ?>
<options>
<option name="xerox">
<sub_option name="Paper Jam">
<input type="dropdown" name="location" />
<input type="textbox" name="printername" />
</sub_option>
<sub_option name="New Printer Request" />
<sub_option name="Supply Request" />
<sub_option name="Hardware Failure" />
</option>
</options>
そして、以下のC#コード
protected void loadControls(string parent, string parentNode)
{
XmlDocument itemList = new XmlDocument();
itemList.Load(@"c:\inetpub\wwwroot\sp\css\itemList.xml");
Panel controls = new Panel();
XmlNodeList nodeList = itemList.SelectNodes("options/child::node()");
test.Text = parent;
foreach (XmlNode node in nodeList)
{
if (node.Attributes["name"].Value == parentNode && node.HasChildNodes)
{
test.Text = "for 2 coming";
foreach (XmlNode subnode in node.ChildNodes)
{
if (subnode.Attributes["name"].Value == parent && subnode.HasChildNodes)
{
foreach (XmlNode optionNode in subnode.ChildNodes)
{
string controlType = optionNode.Attributes["type"].Value;
string controlName = optionNode.Attributes["name"].Value;
switch(controlType)
{
case "dropdown":
DropDownList ddl = new DropDownList();
qna.Controls.Add(ddl);
break;
case "textbox":
TextBox tb = new TextBox();
qna.Controls.Add(tb);
break;
}
}
}
}
}
}
以下の出力 (これは紙詰まりを選択した後です)