Я создаю элемент управления asp.net cutom, внутри которого у меня есть два раскрывающихся списка: companyIdSelection и productFamilySelection. Я заполняю companyIdSelection в Page_Load и для заполнения productFamilySelection в зависимости от выбранного элемента в companyIdSelection. Я использую UpdatePanels для достижения этой цели. , но по какой-то причине каждый раз, когда я обновляю companyIdSelection, вызывается Page_Load (что, насколько мне известно, должно происходить только при перезагрузке всей страницы), список снова перезагружается, и элемент, выбранный пользователем, теряется (выбранный элемент всегда наверху). Вот код
<asp:UpdatePanel ID="updateFamilies"
runat="server"
UpdateMode="Always">
<ContentTemplate>
Company ID:<br>
<br></br>
<asp:DropDownList ID="companyIdSelection"
runat="server"
AutoPostBack="True"
OnSelectedIndexChanged="companyIdSelection_SelectedIndexChanged">
</asp:DropDownList>
<br></br>
Product Family:
<br></br>
<asp:DropDownList ID="productFamilySelection" runat="server"
AutoPostBack="True"
onselectedindexchanged="productFamilySelection_SelectedIndexChanged">
</asp:DropDownList>
<br>
</ContentTemplate>
</asp:UpdatePanel>
protected void Page_Load(object sender, EventArgs e)
{
this.companyIdSelection.DataSource = companyIds(); //companyIds returns the object containing the initial data items
this.companyIdSelection.DataBind();
}
protected void companyIdSelection_SelectedIndexChanged(object sender, EventArgs e)
{
// Page_Load is called again for some reason before this method is called, so it
// resets the companyIdSelection
EngDbService s = new EngDbService();
productFamilySelection.DataSource = s.getProductFamilies(companyIdSelection.Text);
productFamilySelection.DataBind();
}
Also, I tried setting the UpdateMode of the UpdatePanel to "Conditional" and adding an asyncpostback trigger but the result was the same. What am I doing wrong?
PS: я исправил проблему обновления, используя Page.IsPostBack в методе Page_Load, но я все же хотел бы избежать полной обратной передачи, если это возможно