這裏我試圖根據從另一個下拉列表中選擇的值填充下拉列表。這裏是我的兩個代碼:dropdown_SelectedIndexChanged僅適用於第二次
<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)
的條件,什麼都不會發生。但是,如果我刪除它,那麼第一個下拉列表會填充兩次,然後只有第二個下拉列表出現。 有什麼建議爲什麼會發生這種情況?
編輯:我已經添加了代碼來填充第一個下拉列表。第二個下拉列表也是相同的代碼。
您是否嘗試調試並查看PageLoad上發生了什麼以及所選索引更改事件? –
是的...如果我不使用'!IspostBack',編譯器通過getDeveloperId()重新執行一次。但是,如果我再次更改下拉菜單,那麼只有它來到selectedindexchanged方法 – nitinvertigo
,但如果我使用Ispostback,它只是填充第一個下拉菜單,然後沒有任何反應 – nitinvertigo