Здесь я пытаюсь заполнить выпадающий список на основе выбранного значения из другого раскрывающегося списка. Вот мой код, как: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)
, ничего не происходит. Но если я удалю его, первое выпадающее меню будет заполнено дважды, а затем появится только второе выпадающее меню. Любые предложения, почему это происходит?
EDIT: Я добавил код для заполнения первого выпадающего списка. Тот же код для второго выпадающего меню.
Неужели вы пытаетесь отладить и посмотреть, что происходит на странице Load, а также на выбранном событии с измененным индексом? –
yes ... если я не использую '! IspostBack', компилятор снова запускается через getDeveloperId(). Но если я изменил выпадающий список, то только он пришел к selectindexchanged методу – nitinvertigo
, но если я использую Ispostback, он просто заполнит первый выпадающий список один раз, а затем ничего не произойдет – nitinvertigo