让我先说明这是我努力学习更多C#/ .net和web开发的一部分。所以这可能是显而易见的,但我没有看到它。
我正在尝试创建级联DropDownList。我已经看过几个例子,但他们似乎都在查询数据库以获取他们的条目。我的要简单得多。根据第一个下拉列表的值,我将手动填充第二个下拉列表。但是,我似乎没有让OnSelectedIndexChange开火。至少,DropDownList1_SelectedIndexChanged似乎没有被执行。
这是HTML:
<asp:ScriptManager ID="ScriptManager2" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" style="z-index: 1; margin-top: 40px; width: 150px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList><br/>
<asp:DropDownList ID="DropDownList2" runat="server" style="z-index: 1; margin-top: 10px; width: 150px">
</asp:DropDownList><br/>
</ContentTemplate>
</asp:UpdatePanel>
这是C#:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox2.Text = "Changed";
DropDownList1.Items.Clear();
switch (DropDownList1.Text)
{
case "Caesar Tools":
DropDownList2.Items.Add("Caesar Bruteforce");
DropDownList2.Items.Add("ROT-1");
DropDownList2.Items.Add("ROT-2");
DropDownList2.SelectedIndex = 1;
break;
case "ASCII Tools":
DropDownList2.Items.Add("Decimal to ASCII");
DropDownList2.Items.Add("Hex to ASCII");
DropDownList2.Items.Add("Binary to ASCII");
DropDownList2.SelectedIndex = 0;
break;
default:
break;
}
}
我错过了什么?
谢谢!
答案 0 :(得分:2)
嗯,你的代码中确实有一个bug /拼写错误。如果您更仔细地查看方法DropDownList1_SelectedIndexChanged
,您会发现此行可疑。
DropDownList1.Items.Clear();
我的猜测是,当DropDownList1控件中的选择发生更改时,您希望清除 DropDownList2 控件的项目,而不是 DropDownList1 控件。
我已在下面附上了标记和代码,供您参考。
ASPX加价
<asp:ScriptManager runat="server" ID="sm1"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" Style="z-index: 1; margin-top: 40px; width: 150px" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="" Value=""></asp:ListItem>
<asp:ListItem Text="Caesar Tools" Value="Caesar Tools"></asp:ListItem>
<asp:ListItem Text="ASCII Tools" Value="ASCII Tools"></asp:ListItem>
</asp:DropDownList><br />
<asp:DropDownList ID="DropDownList2" runat="server" Style="z-index: 1; margin-top: 10px; width: 150px">
</asp:DropDownList><br />
</ContentTemplate>
</asp:UpdatePanel>
ASPX.cs代码背后
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList2.Items.Clear();
switch (DropDownList1.Text)
{
case "Caesar Tools":
DropDownList2.Items.Add("Caesar Bruteforce");
DropDownList2.Items.Add("ROT-1");
DropDownList2.Items.Add("ROT-2");
DropDownList2.SelectedIndex = 1;
DropDownList2.DataBind();
break;
case "ASCII Tools":
DropDownList2.Items.Add("Decimal to ASCII");
DropDownList2.Items.Add("Hex to ASCII");
DropDownList2.Items.Add("Binary to ASCII");
DropDownList2.SelectedIndex = 0;
DropDownList2.DataBind();
break;
default:
break;
}
}
希望这有帮助。