Ich verwende asp.net 3.5 mit dem Ajax-Toolkit.
Das Problem: Ich habe ein benutzerdefiniertes Steuerelement mit zwei Dropdown-Listen in einem Update-Panel. Die erste DDL hat die Eigenschaft AutoPostBack="true"
und bei Auswahl wird die zweite DDL ausgefüllt. Das Problem ist, dass beim ersten Mal nach dem Laden der Seite die DDL ausgewählt wird und die gesamte Seite neu geladen wird. Das zweite Mal, wenn ein Element in der ersten DDL ausgewählt wird, funktioniert alles wie erwartet.
Ich habe versucht, im UpdatePanel Auslöser hinzuzufügen, aber das ändert das Ergebnis nicht.
Für jede Hilfe sind wir dankbar.
.ascx :
<asp:UpdatePanel ID="popDates" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<p>
<asp:DropDownList ID="ddlDivision" runat="server" AutoPostBack="true" style="width:300px"></asp:DropDownList>
<asp:RequiredFieldValidator ID="requiredDivision" runat="server"
ControlToValidate="ddlDivision" ErrorMessage="* Please specify a value"
ValidationGroup="valGroupGetDates"
InitialValue="Select..." SetFocusOnError="True" CssClass="formValidation">
</asp:RequiredFieldValidator>
</p>
<p>
<asp:DropDownList ID="ddlKMA" runat="server" Enabled="False" AutoPostBack="true" style="width:300px"></asp:DropDownList>
<asp:RequiredFieldValidator ID="requiredKMA" runat="server"
ControlToValidate="ddlKMA" ErrorMessage="* Please specify a value"
ValidationGroup="valGroupGetDates"
InitialValue="Select..." SetFocusOnError="True" CssClass="formValidation">
</asp:RequiredFieldValidator>
</p>
</ContentTemplate>
</asp:UpdatePanel>
ascx.cs :
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsAsync || Page.IsPostBack)
{
String target = Page.Request.Params.Get("__EVENTTARGET");
//Division Session
Session["divisionDropDown"] = ddlDivision.SelectedItem.Value;
populateDivisionDDL();
ddlDivision.SelectedValue = Session["divisionDropDown"].ToString();
if (target != "" && target != null)
{
if (target.Contains("ddlDivision"))
{
populateKMA(ddlDivision.SelectedValue);
}
}
}
if (!Page.IsPostBack)
{
populateDivisionDDL();
ddlKMA.Items.Clear();
ddlKMA.Items.Add(default_item());
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
aspx :
<body>
<form id="ViewSPANodeDatesForm" runat="server">
<div>
<asp:ScriptManager ID="ScriptManagerDates" runat="server"></asp:ScriptManager>
<viewControl:SPANodeDates ID="SPANodeDates1" runat="server"></viewControl:SPANodeDates>
</div>
</form>
</body>
Hinweis: Vor dem Hinzufügen der Ajax-Steuerelemente funktionierte alles wie erwartet.
Gracias.