none
DropDowlnist Selecionar Index RRS feed

  • Pergunta

  • Como achar um index dentro do dropdownlist ?

    Tenho um Proc que carrega um dropdownlist, e gostaria de carregar direto no seu index.

    Obrigado.

    terça-feira, 6 de março de 2012 18:15

Respostas

  • Você pode usar o método Insert() do DropDownList na propriedade Items, veja este exemplo:

    ddlPerfil.Items.Insert(0, new ListItem("Selecione um Perfil", "0"));

    Veja que o primeiro parâmetro do método Insert() é o index de onde vai ficar o elemento.

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 18:30
  • Deixa eu ver se eu entendi direito, seu código conecta ao banco de dados, executa uma stored procedure e atribui o retorno em um DataSet.

    Logo em seguida você combina nr_semana_credito e o nr_ano_credito e adiciona como itens no seu DropDownList, até aqui tudo bem.

    Logo em seguida você faz um foreach no seu DataTable e recupera os valores das colunas Lg_Processada Lg_Liberar_Emissao_Extrato e atribui em variáveis, em seguida você faz um if e coloca suas condições necessarias, caso seja verdadeira é para deixar o item no DropDownList selecionado ??

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 19:20
  • Exato meu querido, cara fiz um porrada de coisa e nada.

    Vlw.

    Tente deixar seu item selecionado desta maneira:

    int lgProcessada = Convert.ToInt16(row["Lg_Processada"]);
    int Lg_Liberar_Emissao_Extrato = Convert.ToInt16(row["Lg_Liberar_Emissao_Extrato"]);
    
    if (lgProcessada == 1 && Lg_Liberar_Emissao_Extrato==1)
    {
        dropConsulta.SelectedItem.Text = "Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " ";
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 19:36
  • Você pode usar o método IndexOf, este método te retorna a posição do item que voc~e procura:

    dropConsulta.Items.IndexOf(new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " "));

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 20:15
  • Ola amigo, acho que estamos quase, la , o que aconteceu ele achou o registro mas nao posicionou.

    Creio eu que falta algum detalhe.

    Abs.

    Falta você remover o item que achou e adicionar na posição que você quer:

    //Criando ListItem para usar na procura
    ListItem listItem = new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " ")
               
    //Recuperando posição de acordo com ListItem criado acima
    int index = dropConsulta.Items.IndexOf(listItem);
    
    //Removendo item de acordo com a posição recupera acima, 
    //fazer tratativa para ver posição realmente existe antes de remover
    dropConsulta.Items.RemoveAt(index);
    
    //Adicionando novo item ao DrodDownList, no topo, posição 0
    dropConsulta.Items.Insert(0,listItem);


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Editado Vitor Mendes terça-feira, 6 de março de 2012 20:40
    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:54
    terça-feira, 6 de março de 2012 20:40
  •  Amigo boa tarde tenta assim.

    Caso não tenha consiguido ainda.

    dropConsulta.SelectedIndex = dropConsulta.Items.IndexOf(new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " "));


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:54
    terça-feira, 6 de março de 2012 20:47

Todas as Respostas

  • Você pode usar o método Insert() do DropDownList na propriedade Items, veja este exemplo:

    ddlPerfil.Items.Insert(0, new ListItem("Selecione um Perfil", "0"));

    Veja que o primeiro parâmetro do método Insert() é o index de onde vai ficar o elemento.

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 18:30
  • Ola amigo nesse caso vc esta adicionando eu quero acha -la codigo abaixo:

     protected void Page_Load(object sender, EventArgs e)
        {

        



            if (!IsPostBack)
            {
                CarregaCombo();

        }

     

      private void CarregaCombo()
        {


            // Executando metodo 
            SqlConnection Conexao = Cl_VariasConexoes.CriarConexao(Convert.ToString(Session["nr_conexao"]));
            try
            {
                //Passa da do dia
                lbEmissao.Text = DateTime.Now.ToString();
                //Metodo para pegar o retorno da funcao.
                SqlCommand cmd = new SqlCommand("Sp_OP_Semanas_Processadas", Conexao);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@exec", "SEL");
                cmd.Parameters.AddWithValue("@procedimento", 15);
                cmd.Parameters.AddWithValue("@Cd_Empresa", Session["cd_empresa"].ToString());
                cmd.Parameters.AddWithValue("@MIGRACAO", 1);
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                DataTable dt = ds.Tables[0];



                for (int i = 0; i < dt.Rows.Count; i++)
                {


                    dropConsulta.Items.Add(new ListItem("Semana" + " " + dt.Rows[i]["nr_semana_credito"].ToString() + " " + " - " + "Ano" + " " +                            dt.Rows[i]["nr_ano_credito"].ToString() + " "));
                }

              A regra fica aqui :

                                                                

                 foreach (DataRow row in ds.Tables[0].Rows)
                {


                    int lgProcessada = Convert.ToInt16(row["Lg_Processada"]);
                    int Lg_Liberar_Emissao_Extrato = Convert.ToInt16(row["Lg_Liberar_Emissao_Extrato"]);


                    if (lgProcessada == 1 && Lg_Liberar_Emissao_Extrato==1)
                    {

                         ---- Selecionar o index , ou seja posicionar no item correto. ------

                      }




                }


     }


    terça-feira, 6 de março de 2012 18:42
  • Ola amigo nesse caso vc esta adicionando eu quero acha -la codigo abaixo:

     protected void Page_Load(object sender, EventArgs e)
        {

        



            if (!IsPostBack)
            {
                CarregaCombo();

        }

     

      private void CarregaCombo()
        {


            // Executando metodo 
            SqlConnection Conexao = Cl_VariasConexoes.CriarConexao(Convert.ToString(Session["nr_conexao"]));
            try
            {
                //Passa da do dia
                lbEmissao.Text = DateTime.Now.ToString();
                //Metodo para pegar o retorno da funcao.
                SqlCommand cmd = new SqlCommand("Sp_OP_Semanas_Processadas", Conexao);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@exec", "SEL");
                cmd.Parameters.AddWithValue("@procedimento", 15);
                cmd.Parameters.AddWithValue("@Cd_Empresa", Session["cd_empresa"].ToString());
                cmd.Parameters.AddWithValue("@MIGRACAO", 1);
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                DataTable dt = ds.Tables[0];



                for (int i = 0; i < dt.Rows.Count; i++)
                {


                    dropConsulta.Items.Add(new ListItem("Semana" + " " + dt.Rows[i]["nr_semana_credito"].ToString() + " " + " - " + "Ano" + " " +                            dt.Rows[i]["nr_ano_credito"].ToString() + " "));
                }

              A regra fica aqui :

                                                                

                 foreach (DataRow row in ds.Tables[0].Rows)
                {


                    int lgProcessada = Convert.ToInt16(row["Lg_Processada"]);
                    int Lg_Liberar_Emissao_Extrato = Convert.ToInt16(row["Lg_Liberar_Emissao_Extrato"]);


                    if (lgProcessada == 1 && Lg_Liberar_Emissao_Extrato==1)
                    {

                         ---- Selecionar o index , ou seja posicionar no item correto. ------

                      }




                }


     }


    Alguem tem uma ideia ?
    terça-feira, 6 de março de 2012 19:11
  • Deixa eu ver se eu entendi direito, seu código conecta ao banco de dados, executa uma stored procedure e atribui o retorno em um DataSet.

    Logo em seguida você combina nr_semana_credito e o nr_ano_credito e adiciona como itens no seu DropDownList, até aqui tudo bem.

    Logo em seguida você faz um foreach no seu DataTable e recupera os valores das colunas Lg_Processada Lg_Liberar_Emissao_Extrato e atribui em variáveis, em seguida você faz um if e coloca suas condições necessarias, caso seja verdadeira é para deixar o item no DropDownList selecionado ??

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 19:20
  • Exato meu querido, cara fiz um porrada de coisa e nada.

    Vlw.

    terça-feira, 6 de março de 2012 19:30
  • Exato meu querido, cara fiz um porrada de coisa e nada.

    Vlw.

    Tente deixar seu item selecionado desta maneira:

    int lgProcessada = Convert.ToInt16(row["Lg_Processada"]);
    int Lg_Liberar_Emissao_Extrato = Convert.ToInt16(row["Lg_Liberar_Emissao_Extrato"]);
    
    if (lgProcessada == 1 && Lg_Liberar_Emissao_Extrato==1)
    {
        dropConsulta.SelectedItem.Text = "Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " ";
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 19:36
  • Vou tentar e te aviso.

    Obrigado.

    terça-feira, 6 de março de 2012 19:44
  • Ola amigo Infelizemente nao deu certo, o que ele fez foi posicionar o registro em primeiro.

    No caso eu tenho que achar no index e posicionar o mesmo.

    Obrigado.

    terça-feira, 6 de março de 2012 20:06
  • Você pode usar o método IndexOf, este método te retorna a posição do item que voc~e procura:

    dropConsulta.Items.IndexOf(new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " "));

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:55
    terça-feira, 6 de março de 2012 20:15
  • Otimo vou testar e te aviso.

    Mais uma vez muito obrigado.

    terça-feira, 6 de março de 2012 20:26
  • Ola amigo, acho que estamos quase, la , o que aconteceu ele achou o registro mas nao posicionou.

    Creio eu que falta algum detalhe.

    Abs.

    terça-feira, 6 de março de 2012 20:34
  • Ola amigo, acho que estamos quase, la , o que aconteceu ele achou o registro mas nao posicionou.

    Creio eu que falta algum detalhe.

    Abs.

    Falta você remover o item que achou e adicionar na posição que você quer:

    //Criando ListItem para usar na procura
    ListItem listItem = new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " ")
               
    //Recuperando posição de acordo com ListItem criado acima
    int index = dropConsulta.Items.IndexOf(listItem);
    
    //Removendo item de acordo com a posição recupera acima, 
    //fazer tratativa para ver posição realmente existe antes de remover
    dropConsulta.Items.RemoveAt(index);
    
    //Adicionando novo item ao DrodDownList, no topo, posição 0
    dropConsulta.Items.Insert(0,listItem);


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Editado Vitor Mendes terça-feira, 6 de março de 2012 20:40
    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:54
    terça-feira, 6 de março de 2012 20:40
  • Vou testar ja te falo.

    vlw dinovo rssr

    terça-feira, 6 de março de 2012 20:41
  • Ola amigo, dinovo nao foi, o registro esta indo para o topo, nao setou e parou no existente no ddl.

    Obrigadao.

    terça-feira, 6 de março de 2012 20:47
  •  Amigo boa tarde tenta assim.

    Caso não tenha consiguido ainda.

    dropConsulta.SelectedIndex = dropConsulta.Items.IndexOf(new ListItem("Semana" + " " + lgProcessada + " " + " - " + "Ano" + " " + Lg_Liberar_Emissao_Extrato + " "));


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    • Marcado como Resposta _Manigold_ terça-feira, 6 de março de 2012 20:54
    terça-feira, 6 de março de 2012 20:47
  • Vou tentar obrigado.

    terça-feira, 6 de março de 2012 20:50
  • Ola amigo funcionou, muito obrigado a todos.
    terça-feira, 6 de março de 2012 20:54