在这里,我试图根据另一个下拉列表中的选定值填充下拉列表。这是我的代码:
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true">
</asp:DropDownList>
</div>
</form>
这是代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
getDeveloperId();
}
}
public void getProjectId()
{
string projName, projId, projFinal;
using (var cmdScope_ID = new SqlCommand("SELECT [ProjectId],[ProjectName] FROM [DB].[dbo].[Sample Table]", con))
{
using (var reader = cmdScope_ID.ExecuteReader())
{
while (reader.Read())
{
projId = reader[0].ToString();
projName = reader[1].ToString();
projFinal = projId + "-" + "[" + projName + "]";
DropDownList1.Items.Insert(0, new ListItem(projFinal, "1"));
}
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//code to get data from DB and populate DropDownList2
}
我的问题是当我从第一个下拉列表中选择任何条目时,第一次什么都没有发生。只有页面重新加载。但如果我再做一次,那么只会填充第二个下拉列表。
此外,如果我保持 if (!IsPostBack)
状态,则不会发生任何事情。但是如果我删除它,第一个下拉列表会填充两次,然后只有第二个下拉列表出现。有什么建议为什么会发生这种情况?
编辑:我添加了代码来填充第一个下拉列表。第二个下拉列表的代码也相同。