2013-05-21 65 views
0

我有一個奇怪的問題,我已經複製並粘貼了一些代碼,但是這一個在一個視圖中正常工作,並且不在另一個視圖中工作。DropDownList值不爲空

當沒有值屬性val(「」)具有文本屬性val(「Selecione um tipo」)時,但第一個「SelectIndexChange」事件觸發器後,我的問題是dropDownList(「Destino」或「Origem」) ,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

檢查,如果您的下拉是rebinded和選擇價值被覆蓋時,後背部與條件done.bind您在下拉菜單頁面加載

If(!IsPostBack)