none
Modificar Item de Listbox RRS feed

  • Pregunta

  • Saben como modificar un item de un listbox que esta debajo del que este seleccionado en asp.net c#?

    Por ejemplo asi lo muevo:

    lo muevo para arriba,entonces es de abajo queda con el mismo datos,osea como modifico al que quedo abajo y es igual al de arriba movido?

    int index = lsblista.SelectedIndex;
            lsblista.Items.Insert(lsblista.SelectedIndex - 1, lsblista.SelectedItem.ToString());
            lsblista.Items.RemoveAt(index + 1);

    aclaro lo items lo cargo de db sql
    jueves, 17 de marzo de 2016 16:16

Respuestas

  • ya lo relvis asi:

     int selectedIndex = lstTipo.SelectedIndex;
        if (selectedIndex < lstTipo.Items.Count - 1 & selectedIndex != -1)
        {
            lstTipo.Items.Insert(selectedIndex + 2, lstTipo.Items[selectedIndex]);
            lstTipo.Items.RemoveAt(selectedIndex);
            lstTipo.SelectedIndex = selectedIndex + 1;
        }

    sábado, 19 de marzo de 2016 17:52

Todas las respuestas

  • Hola,

               //Item seleccionado
                int index = ListBox1.SelectedIndex;
    
                ListBox1.Items[index + 1].Text = "Modificado";
                ListBox1.Items[index + 1].Value = "MiNuevoValor";

    Saludos.


    JC NaupaCrispín

    jueves, 17 de marzo de 2016 16:34
  • seria restar al que subo y sumar al que queda abajo?,como seria el codigo?
    jueves, 17 de marzo de 2016 16:45
  • Hola,

    Prueba hacer esto.

                //Indice actual
                int index = ListBox1.SelectedIndex;
    
                ListBox1.Items.Insert(index - 1, ListBox1.SelectedItem.ToString());
                ListBox1.Items.RemoveAt(index);
                ListBox1.Items[index].Text = ListBox1.Items[index].Text + " - Modificado";

    Saludos.


    JC NaupaCrispín


    jueves, 17 de marzo de 2016 16:59
  • pero quiero que lo reste asi

    int index = lsblista.SelectedIndex;
       lsblista.Items.Insert(lsblista.SelectedIndex - 1, lsblista.SelectedItem.ToString());
        lsblista.Items.RemoveAt(index + 1); SI FUNCIONA Y ME LO SUBI,PERO

    COMO SUMARLE AL QUE QUEDO ABAJO, QUE EL QUE SUBI AHORA OCUPA SU LUGAR

    EJEMPLO

    1

    2

    3 MUEVO EL 3 PARA ARRIBA Y LOS RESTA QUEDA EN 2,ENTONCES YA HAY DOS CON#2,COMO AL SUBRILO AUTOMATICAMENTE ME SUME LO QUE ANTES ERA 2 A #3????

    jueves, 17 de marzo de 2016 17:15
  • Hola,

    Pero si tus datos son :

    1
    2
    3

    Y si subes un elemento y restas, y el otro lo sumas, quedaría de la misma forma?

    Supongamos que selecciones el 3 y des click :

    1
    2 (Este se restó -1)
    3 (Este se sumó +1)

    Así es como quieres?

    Saludos.


    JC NaupaCrispín

    jueves, 17 de marzo de 2016 17:32
  • asi es sube resta y el de abajo suma,pero al subir automaticamnte me sume el 2 y asi nada se repita
    jueves, 17 de marzo de 2016 17:39
  • Hola,

    Prueba hacer esto :

                int index = ListBox1.SelectedIndex;
    
                ListBox1.Items.Insert(index -1, ListBox1.SelectedItem.ToString());
                ListBox1.Items.RemoveAt(index + 1);
    
                ListBox1.Items[index - 1].Text = (Convert.ToInt32(ListBox1.Items[index - 1].Text) - 1).ToString() + " (Este se restó -1)";
                ListBox1.Items[index].Text = (Convert.ToInt32(ListBox1.Items[index].Text) + 1).ToString() + " (Este se sumó +1)";

    Les concateno el texto , para saber cual es cual, ya que mostraría el mismo resultado si no le pongo nada.

    Saludos.


    JC NaupaCrispín


    jueves, 17 de marzo de 2016 17:42
  • genial si funciono a la perfeccion, ahora otra cuestios, como los modifico con strore procedure de sql despues de modificar al subri en listbox?,un update
    jueves, 17 de marzo de 2016 17:56
  • asi tengo en asp.net 

    SqlConnection con = new SqlConnection(sql);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "MoverRegistros";
            cmd.Parameters.Add("@id", SqlDbType.Int).Value = lbli.Text.Trim();
            cmd.Parameters.Add("@no_producto", SqlDbType.Int).Value = lblp_cli.Text.Trim();
            cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnom.Text.Trim();
           
            cmd.Connection = con;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                Response.Write("Record Update successfully");
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }   

    y en sql  store: UPDATE Cat_Tipo_Contenedor SET nombre=@nombre, no_producto=@no_producto where id=@id

    jueves, 17 de marzo de 2016 17:59
  • nose si  este bien, que al mover el item ok se sube y se resta y al seleccionarlo se pasa a un textbox, entonces que es que quedo abajo sin seleccionarlo se mande a un textbox, y asi se modifiquen los dos en automatico?, si me explico?
    jueves, 17 de marzo de 2016 19:02
  • Hola,

    Pero al momento de mover los elementos tienes los valores, y ahí puedes mandarlos a tus TextBox o puedes mandar a una función donde te actualice.

    int index = ListBox1.SelectedIndex; ListBox1.Items.Insert(index -1, ListBox1.SelectedItem.ToString()); ListBox1.Items.RemoveAt(index + 1); string esteSeResto = (Convert.ToInt16(ListBox1.Items[index - 1].Text) - 1).ToString() + " (Este se restó -1)"; string esteSeSumo = (Convert.ToInt16(ListBox1.Items[index].Text) + 1).ToString() + " (Este se sumó +1)"; ListBox1.Items[index - 1].Text = esteSeResto; TextBox1.Text = esteSeResto; ListBox1.Items[index].Text = esteSeSumo; TextBox2.Text = esteSeSumo;

    O si quieres que se actualice automáticamente, cuando cambien, tendrías que llamar a una función para actualizar.

            protected void btnMover_Click(object sender, EventArgs e)
            {
    
                int index = ListBox1.SelectedIndex;
    
                ListBox1.Items.Insert(index - 1, ListBox1.SelectedItem.ToString());
                ListBox1.Items.RemoveAt(index + 1);
    
                string esteSeResto = (Convert.ToInt16(ListBox1.Items[index - 1].Text) - 1).ToString() + " (Este se restó -1)";
                string esteSeSumo = (Convert.ToInt16(ListBox1.Items[index].Text) + 1).ToString() + " (Este se sumó +1)";
    
                ListBox1.Items[index - 1].Text = esteSeResto;
                ListBox1.Items[index].Text = esteSeSumo;
    
                actualizarDatos(esteSeResto, esteSeSumo);
               
            }
    
            private void actualizarDatos(string valor1, string valor2)
            {
                //Aquí con los valores que te mandan, solo actualizas
            }

    Saludos.


    JC NaupaCrispín

    jueves, 17 de marzo de 2016 19:25
  • asi

    protected void btnMover_Click(object sender, EventArgs e)
            {
    
                int index = ListBox1.SelectedIndex;
    
                ListBox1.Items.Insert(index - 1, ListBox1.SelectedItem.ToString());
                ListBox1.Items.RemoveAt(index + 1);
    
                string esteSeResto = (Convert.ToInt16(ListBox1.Items[index - 1].Text) - 1).ToString() + " (Este se restó -1)";
                string esteSeSumo = (Convert.ToInt16(ListBox1.Items[index].Text) + 1).ToString() + " (Este se sumó +1)";
    

    probe tu codigo, si sube,pero no lo resta al subir se queda igual 3,3

    jueves, 17 de marzo de 2016 19:52
  • hola JC NaupaCrispín:

    Si funciono, para el caso visceversa???? osea 

    1

    2este bajo(se suma)

    3este subo(se  resta)

    asi me pasaste el codigo visceversa 

    int index = lstTipo.SelectedIndex;

            lstTipo.Items.Insert(index - 1, lstTipo.SelectedItem.ToString());

            lstTipo.Items.RemoveAt(index + 1);

    asi si funciona este que me pasaste de subir el 3 y bajar el 2, pero como seria al revez

    el 2 bajo y el 3 sube? 


    sábado, 19 de marzo de 2016 15:53
  • ya lo relvis asi:

     int selectedIndex = lstTipo.SelectedIndex;
        if (selectedIndex < lstTipo.Items.Count - 1 & selectedIndex != -1)
        {
            lstTipo.Items.Insert(selectedIndex + 2, lstTipo.Items[selectedIndex]);
            lstTipo.Items.RemoveAt(selectedIndex);
            lstTipo.SelectedIndex = selectedIndex + 1;
        }

    sábado, 19 de marzo de 2016 17:52