我有一个方法可以根据您之前的选择填充下拉列表:
private void CarregarCombos(DropDownList dropDown)
{
dropDown.Items.Clear();
dynamic resultados = null;
switch (dropDown.ID)
{
case "ddlOrgaoProdutor":
dropDown.Items.Add(new ListItem("0000 - Todos os Órgãos", ""));
OrgaoProdutor bllOPR = new OrgaoProdutor();
resultados = new List<OrgaoProdutorInfo>();
resultados = bllOPR.ListarOrgaoProdutorPorStatus("1,2").OrderBy(n => n.Numero).ToList();
break;
case "ddlFuncao":
dropDown.Items.Add(new ListItem("Selecione", ""));
Funcao bllFuncao = new Funcao();
resultados = new List<FuncaoInfo>();
resultados = bllFuncao.ListarPorOrgaoProdutor(DataParser.ToInt(ddlOrgaoProdutor.SelectedValue), 1).OrderBy(n => n.Numero).ToList();
break;
case "ddlSubFuncao":
dropDown.Items.Add(new ListItem("Selecione", ""));
SubFuncao bllSubFuncao = new SubFuncao();
resultados = new List<SubFuncaoInfo>();
resultados = bllSubFuncao.ListarSubFuncao(DataParser.ToInt(ddlOrgaoProdutor.SelectedValue), DataParser.ToInt(ddlFuncao.SelectedValue), 1).OrderBy(n => n.Numero).ToList();
break;
case "ddlAtividade":
dropDown.Items.Add(new ListItem("Selecione", ""));
Atividade bllAtividade = new Atividade();
resultados = new List<AtividadeInfo>();
resultados = bllAtividade.ListarAtividades(DataParser.ToInt(ddlOrgaoProdutor.SelectedValue), DataParser.ToInt(ddlFuncao.SelectedValue), DataParser.ToInt(ddlSubFuncao.SelectedValue), 1).OrderBy(n => n.Numero).ToList();
break;
}
foreach (var item in resultados)
dropDown.Items.Add(new ListItem(string.Format("{0} - {1}", item.Numero.ToString(), item.Descricao), item.Codigo.ToString()));
}
我的Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CarregarCombos(ddlOrgaoProdutor);
CarregarCombos(ddlFuncao);
}
}
只是第一个下拉列表填入前端,但在代码隐藏中所有工作都完美,因为在其他应用程序中,该方法正常工作。会是渲染问题吗? 细节:当我围绕可见链条时,只启用第一个。
由于
答案 0 :(得分:0)
从下面的代码中,您为ListItem
Text = 0000 - Todos os Órgãos
Value as ""
和ddlOrgaoProdutor (the parent dropdown)
case "ddlOrgaoProdutor":
dropDown.Items.Add(new ListItem("0000 - Todos os Órgãos", ""));
ddlOrgaoProdutor1's SelectedValue
对于所有其他下拉列表的数据,您要根据""
过滤数据,该ddlOrgaoProdutor
定义为resultados = bllFuncao.ListarPorOrgaoProdutor(DataParser.ToInt(ddlOrgaoProdutor.SelectedText), 1).OrderBy(n => n.Numero).ToList();
。您可能需要发送或{set {}设置if (!IsPostBack) .. )
ddlOrgaoProdutor
此外,您在初始页面加载期间填充下拉列表(OnSelectedIndexChanged="ddlOrgaoProdutor_SelectedIndexChanged" AutoPostBack="true"
,当ddlOrgaoProdutor的值发生更改时,将不会触发该下拉列表。如果您需要在{的值重新绑定所有drowdowns时{1}}更改然后您需要设置CarregarCombos
并从事件调用函数 protected void ddlOrgaoProdutor_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlFuncao= (DropDownList)Page.FindControl("ddlFuncao");
CarregarCombos(ddlFuncao);
// find other dropdownlists and call the function CarregarCombos
}
以获取所有其他下拉列表。
{{1}}