在asp.net中加载3个基于彼此的下拉列表
本文关键字:于彼此 下拉列表 3个 加载 asp net | 更新日期: 2023-09-27 18:21:51
我需要基于彼此加载下拉列表。我做了如下:
<asp:DropDownList ID="drblLanguages" runat="server" OnSelectedIndexChanged="drblLanguages_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList ID="DrpCategory" runat="server" OnSelectedIndexChanged="DrpCategory_SelectedIndexChanged" AutoPostBack="true" EnableViewState="true">
</asp:DropDownList>
<asp:DropDownList ID="DrpEmailTemplate" runat="server" Enabled="false" OnSelectedIndexChanged="DrpEmailTemplate_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
我的后端代码如下:
protected void drblLanguages_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
LoadDataForCategoty();
}
catch (Exception ex)
{
SendToErrorPage(ex);
}
}
protected void DrpCategory_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
LoadEmailTemplateToDropDown();
}
catch (Exception ex)
{
SendToErrorPage(ex);
}
}
In-Page_load事件
protected override void OnInit(EventArgs e)
{
try
{
LoadLanguageDropdowns();
}
catch (Exception ex)
{
SendToErrorPage(ex);
}
}
在此处,当语言发生更改时,将加载相关类别。但当类别改变时,它总是选择第一条记录(索引-1),并且它调用CCD_ 1事件而不是CCD_。下拉列表似乎是从头开始初始化的。我该如何解决此问题?
if(!IsPostBack)
{
LoadLanguageDropdowns();
}
你试试这个吗?您应该在Page_load中加载下拉列表,而不是在OnInit中。。这将只在第一次打开时加载你的下拉菜单,你的问题不应该出现。
编辑:你有三个下拉
<asp:DropDownList runat="server" ID="LanguageDdl" OnSelectedIndexChanged="LanguageDdl_SelectedIndexChanged" DataTextField="Title" DataValueField="ID" AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="CategoryDdl" OnSelectedIndexChanged="CategoryDdl_SelectedIndexChanged" DataTextField="Title" DataValueField="ID" AutoPostBack="true">
</asp:DropDownList>
<asp:DropDownList runat="server" ID="TemplateDdl" OnSelectedIndexChanged="TemplateDdl_SelectedIndexChanged" DataTextField="Title" DataValueField="ID" AutoPostBack="true">
</asp:DropDownList>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LanguageDdl.DataSource = new Varmebaronen.AppCode.BO.Object().GetList();
LanguageDdl.DataBind();
}
}
protected void LanguageDdl_SelectedIndexChanged(object sender, EventArgs e)
{
//if query the database for dataSource like in my case here you can
// take value of the languagedropdown and fetch the category for the current language
CategoryDdl.DataSource = new Varmebaronen.AppCode.BO.Category().GetList();
CategoryDdl.DataBind();
}
protected void CategoryDdl_SelectedIndexChanged(object sender, EventArgs e)
{
TemplateDdl.DataSource = new Varmebaronen.AppCode.BO.Product().GetList();
TemplateDdl.DataBind();
}
protected void TemplateDdl_SelectedIndexChanged(object sender, EventArgs e)
{
}