一个updatepanel中有两个下拉列表,两个都有autopostback = true 唯一的问题是,第一次下拉值改变时,调用了两个事件(ddlCountry_SelectedIndexChanged和ddlPackage_SelectedIndexChanged)。 在第一次之后,每件事情都会好起来,并且每次事件都会在相关下拉列表索引更改后调用。
这是我的代码:
<asp:UpdatePanel ID="updPackage" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlCountry" EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="ddlPackage" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<div class="divManagerBoxSection">
<asp:Label CssClass="lblManagerBox" ID="Label1" runat="server" Text="کشور"></asp:Label>
<asp:DropDownList AutoPostBack="true" CssClass="ddlManagerBox ddlCountry" ID="ddlCountry"
OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged" runat="server">
<asp:ListItem Value="0" Enabled="false">انتخاب کنید</asp:ListItem>
<asp:ListItem Value="1">ایران</asp:ListItem>
<asp:ListItem Value="2">تایلند</asp:ListItem>
<asp:ListItem Value="3">ترکیه</asp:ListItem>
<asp:ListItem Value="4">روسیه</asp:ListItem>
</asp:DropDownList>
</div>
<div class="divManagerBoxSection">
<asp:Label CssClass="lblManagerBox" ID="Label2" runat="server" Text="پکیج"></asp:Label>
<asp:DropDownList CssClass="ddlManagerBox ddlPackage" ID="ddlPackage" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="ddlPackage_SelectedIndexChanged">
<asp:ListItem Value="0" Enabled="false">انتخاب کنید</asp:ListItem>
<asp:ListItem Value="1">4 شب پاتایا 3 شب بانکوک</asp:ListItem>
<asp:ListItem Value="2">3 شب پوکت 3 شب سامویی</asp:ListItem>
<asp:ListItem Value="3">پکیج جدید ...</asp:ListItem>
</asp:DropDownList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
和C#:
protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
{
ListItem lst = new ListItem("A", "0");
ddlCity1.Items.Insert(ddlCity1.Items.Count, lst);
}
protected void ddlPackage_SelectedIndexChanged(object sender, EventArgs e)
{
ListItem lst = new ListItem("B", "0");
ddlCity1.Items.Insert(ddlCity1.Items.Count, lst);
}
在ddlCity上更改ddlCountry结果的值:
一个 乙 一个 一个 甲
并在ddlCity上更改ddlPackage的值:
一个 乙 乙 乙 乙
首次更改哪个下拉列值没有变化,两个事件都会运行。 任何帮助都会受到赞赏。
答案 0 :(得分:1)
这是因为您在DropDownLists上没有默认值,因此在第一次调用Codebehind时认为“Null”更改为“A Value”(例如:4شبپاتایا3شببانکوک)。 值(4شبپاتایا3شببانکوک)在输出中显示为默认选择值,但在代码隐藏中不被视为选定值,并被标记为第一次调用中的更改。 在两个DropDownLists中,选择一个项目作为默认值,问题已解决。 像这样:
<div class="divManagerBoxSection">
<asp:Label CssClass="lblManagerBox" ID="Label1" runat="server" Text="کشور"></asp:Label>
<asp:DropDownList AutoPostBack="true" CssClass="ddlManagerBox ddlCountry" ID="ddlCountry"
OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged" runat="server">
<asp:ListItem Value="0" Enabled="false">انتخاب کنید</asp:ListItem>
<asp:ListItem Value="1" Selected="True">ایران</asp:ListItem>
<asp:ListItem Value="2">تایلند</asp:ListItem>
<asp:ListItem Value="3">ترکیه</asp:ListItem>
<asp:ListItem Value="4">روسیه</asp:ListItem>
</asp:DropDownList>
</div>
<div class="divManagerBoxSection">
<asp:Label CssClass="lblManagerBox" ID="Label2" runat="server" Text="پکیج"></asp:Label>
<asp:DropDownList CssClass="ddlManagerBox ddlPackage" ID="ddlPackage" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="ddlPackage_SelectedIndexChanged">
<asp:ListItem Value="0" Enabled="false">انتخاب کنید</asp:ListItem>
<asp:ListItem Value="1" Selected="True">4 شب پاتایا 3 شب بانکوک</asp:ListItem>
<asp:ListItem Value="2">3 شب پوکت 3 شب سامویی</asp:ListItem>
<asp:ListItem Value="3">پکیج جدید ...</asp:ListItem>
</asp:DropDownList>
</div>
查看两个DDL中第一个启用项目的Selected="True"
。