我在一个网页表单上有一个下拉列表。它包含州名。该下拉列表在页面加载时使用xml文件填充。当我选择一个特定的州时,我会触发onselectedindexchange事件。当我选择佛罗里达(索引9)时,索引会更改为7(康涅狄格州)。我不知道发生了什么。如有任何帮助,将不胜感激。我不是一个专业的程序员。谢谢
下面是xml文件数据。
<state name="Delaware" abs="DE">
<id>8</id>
<counties>
<county id="1">Kent</county>
<county id="2">New Castle</county>
<county id="3">Sussex</county>
</counties>
</state>
<state name="Florida" abs="FL">
<id>9</id>
<counties>
<county id="1">Alachua</county>
<county id="2">Baker</county>
<county id="3">Bay</county>
<county id="4">Bradford</county>
<county id="5">Brevard</county>
<county id="6">Broward</county>
网页控件
<asp:DropDownList ID="ddlState" CssClass="form-control" runat="server" OnSelectedIndexChanged="ddlState_SelectedIndexChanged" AutoPostBack="true" TabIndex="0"></asp:DropDownList>
代码隐藏
我正在获取索引,然后使用收集到的州的县填充另一个列表框控件
protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
{
int nodeid = ddlState.SelectedIndex;
ddStateComm.SelectedIndex = nodeid - 1;
countyfill(nodeid, sender);
countyfill(ddStateComm.SelectedIndex + 1, ddStateComm);
txtZipcode.Focus();
}
此代码用于获取所选州的县节点
protected void countyfill(int id, object sender)
{
XmlDocument doc = new XmlDocument();
doc.Load(MapPath("\~/App_Data/counties.xml"));
XmlNodeList ing = doc.SelectNodes("states/state[id = " + id + "]/counties/*");
if (sender.Equals(ddStateComm))
{
lstCounties.Items.Clear();
for (int i = 0; i < ing.Count; i++)
{
lstCounties.Items.Add(new ListItem(ing.Item(i).InnerText));
}
}
else
{
dpdCounty.Items.Clear();
for (int i = 0; i < ing.Count; i++)
{
dpdCounty.Items.Add(new ListItem(ing.Item(i).InnerText));
}
}
}
我试着将索引8和9的状态移到51和52,看看是否会发生变化。所有其他状态都工作正常。我已经检查了xml文件,只是为了确保没有一些简单的缺失结束标记导致这些特定状态的问题,但我没有看到任何东西。
1条答案
按热度按时间bq3bfh9z1#
这个错误的原因是由于XML文件格式不正确。属性abr表示州的缩写,在一些州被错误地拼写为abs。所以在上面的代码中,你会注意到属性abs=“FL”,如果它们都是这样的话,这是很好的。所有其他州都使用abr=“State abbreviation”我希望这对大家有帮助。我应该有一个XML架构。