我遇到了一个奇怪的问题,我复制并粘贴了一些代码,但是这个代码在一个视图中工作正常,在另一个视图中不起作用。
我的问题是dropDownList(“Destino”或“Origem”)当没有值属性val(“”)有文本属性val(“Selecione um tipo”),但在第一个“SelectIndexChange”事件触发器之后,这个dropDownList获得了文本和值属性的val(“Selecione um tipo”)。
这是我的代码:
protected void ddlTipoUADestinoSrc_SelectedIndexChanged(object sender, EventArgs e)
{
List<UnidadeArmazenamento> uas = new UnidadeArmazenamentoBO().GetAllUnidadesArmazenamentoByUnidade(LoggedUser.UnidadeActiva.IDUNIDADE, false);
if (!string.IsNullOrEmpty(ddlTipoUADestinoSrc.SelectedValue))
{
if (ddlTipoUADestinoSrc.SelectedValue.Equals("Silo"))
uas = constroiModeloEBusca(TipoUnidadeArmazenamento.Silo);
else if (ddlTipoUADestinoSrc.SelectedValue.Equals("Moega"))
uas = constroiModeloEBusca(TipoUnidadeArmazenamento.Moega);
ddlSiloDestinoSrc.DataSource = uas;
ddlSiloDestinoSrc.DataBind();
}
else
{
this.LoadSiloDestino(uas);
}
}
熟悉的方法:
private void LoadSiloDestino(List<UnidadeArmazenamento> unidadesArmazenamento)
{
ddlSiloDestinoSrc.DataTextField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.NOME);
ddlSiloDestinoSrc.DataValueField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.IDUNIDADEARMAZENAMENTO);
ddlSiloDestinoSrc.DataSource = unidadesArmazenamento;
ddlSiloDestinoSrc.DataBind();
ddlSiloDestinoSrc.Items.Insert(0, new ListItem("Selecione o destino", string.Empty));
}
private ListItem[] tiposUnidadeArmazenamento()
{
return UIHelp.BuildDropDownListEnum<TipoUnidadeArmazenamento>("Selecione um tipo");
}
private List<UnidadeArmazenamento> constroiModeloEBusca(TipoUnidadeArmazenamento tipoUA)
{
return new UnidadeArmazenamentoBO().GetUnidadesArmazenamentoByModel(new UnidadeArmazenamento { TIPOUNIDADE = tipoUA, Unidade = this.LoggedUser.UnidadeActiva }, false);
}
最后一个方法是在初始化页面调用
private void LoadDropDownList()
{
UnidadeArmazenamentoBO siloBo = new UnidadeArmazenamentoBO();
if (ddlTipoGrao.Items.Count == 0)
ddlTipoGrao.Items.AddRange(UIHelp.BuildDropDownListEnum<Grao>("Selecione o Grão"));
if (ddlSafra.Items.Count == 0)
ddlSafra.Items.Insert(0, new ListItem("Selecione a safra", string.Empty));
ddlSafra.DataBind();
if (ddlTipoOrigem.Items.Count == 0)
ddlTipoOrigem.Items.AddRange(UIHelp.BuildDropDownListEnum<TipoOrigemEnsilagem>("Selecione o tipo de Origem"));
if (ddlTipoDestino.Items.Count == 0)
ddlTipoDestino.Items.AddRange(this.tiposUnidadeArmazenamento());
if (ddlSituacaoProduto.Items.Count == 0)
ddlSituacaoProduto.Items.AddRange(UIHelp.BuildDropDownListEnum<EstadoDoGrao>("Selecione a Situação"));
List<Equipamento> secadores = new EquipamentosBO().GetEquipamentosByUnidade(this.LoggedUser.UnidadeActiva.IDUNIDADE).FindAll(s => s.TIPO == TipoEquipamento.Secador && !s.MANUTENCAO);
ddlSecador.DataSource = secadores;
ddlSecadorSrc.DataSource = secadores;
ddlSecadorSrc.DataBind();
ddlSecador.DataBind();
ddlSecador.Items.Insert(0, new ListItem("Selecione o secador", ""));
ddlSecadorSrc.Items.Insert(0, new ListItem("Selecione o secador", ""));
ddlSiloOrigemSrc.DataTextField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.NOME);
ddlSiloOrigemSrc.DataValueField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.IDUNIDADEARMAZENAMENTO);
ddlSiloDestinoSrc.DataTextField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.NOME);
ddlSiloDestinoSrc.DataValueField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.IDUNIDADEARMAZENAMENTO);
List<UnidadeArmazenamento> unidadesArmazenamento = siloBo.GetAllUnidadesArmazenamentoByUnidade(this.LoggedUser.UnidadeActiva.IDUNIDADE, false);
ddlTipoUADestinoSrc.DataSource = this.tiposUnidadeArmazenamento();
ddlTipoUADestinoSrc.DataBind();
ddlTipoUAOrigemSrc.DataSource = this.tiposUnidadeArmazenamento();
ddlTipoUAOrigemSrc.DataBind();
ddlSiloOrigemSrc.DataSource = unidadesArmazenamento;
ddlSiloOrigemSrc.DataBind();//utilizado para consultas
ddlSiloOrigemSrc.Items.Insert(0, new ListItem("Selecione a origem", String.Empty));
ddlSiloDestinoSrc.DataSource = unidadesArmazenamento.FindAll(s => s.TIPOUNIDADE == TipoUnidadeArmazenamento.Silo);
ddlSiloDestinoSrc.DataBind();//utilizado para consultas
ddlSiloDestinoSrc.Items.Insert(0, new ListItem("Selecione um silo", String.Empty));
ddlSituacaoProduto.DataBind();
ddlTipoGrao.DataBind();
ddlTipoOrigem.DataBind();
if (!this.RecordStatus.Equals(string.Empty))
{
ddlOrigem.DataTextField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.NOME);
ddlOrigem.DataValueField = TypeExtensions.NomedaPropriedade<UnidadeArmazenamento>(p => p.IDUNIDADEARMAZENAMENTO);
ddlOrigem.DataSource = siloBo.GetAllUnidadesArmazenamentoByUnidade(this.LoggedUser.UnidadeActiva.IDUNIDADE, false);
ddlOrigem.DataBind();
}
}
任何帮助都很有用,因为,我完全迷失了!
答案 0 :(得分:0)
检查您的下拉列表是否被重新绑定,并且在回发完成后覆盖所选值。在页面加载中显示您的下拉列表
If(!IsPostBack)