C sharp - Actualizar listview desde otro form

   
Vista:

Actualizar listview desde otro form

Publicado por Lazaro (8 intervenciones) el 21/06/2016 18:41:40
Buenas estimados:
Me encuentro desarrollando un pequeño programita, cuando voy a modificar o agregar un elemento a mi listview abro el form de ABM y capturo los datos. Despues de guardar ejecuto el metodo ActualizarTabla() que se encuentra en el form principal y el listview no se actualiza pero los cambios asentan correctamente en la bd.
Además, para la baja de items que la hago desde la pantalla principal (sin un form auxiliar) si se actualiza.
Tambien ejecuto este metodo cuando inicio la app para rellenear el list view.

Aquí el metodo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void ActualizarTabla()
        {
            List<Reloj> relojes = new List<Reloj>();
            listRelojes.Items.Clear();
 
            relojes = controladorRlojes.GetRelojes();
 
            int index = 0;
            CheckBox chck = new CheckBox();
            foreach (Reloj reloj in relojes)
            {
                listRelojes.Items.Add(reloj.GetNumero().ToString());
                listRelojes.Items[index].SubItems.Add(reloj.GetNombre());
                listRelojes.Items[index].SubItems.Add(reloj.GetIp());
                listRelojes.Items[index].SubItems.Add(reloj.GetPuerto().ToString());
                listRelojes.Items[index].SubItems.Add("Desconectado");
                listRelojes.Items[index].SubItems.Add("0");
                listRelojes.Items[index].SubItems.Add(reloj.GetId().ToString());
                index++;
            }
        }

Y aquí la llamada desde el form auxiliar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void btnGuardar_Click(object sender, EventArgs e)
        {
            bool resul = false;
            Reloj reloj = new Reloj();
            reloj.setId(Convert.ToInt32(textID.Text));
            reloj.setNombre(textNombre.Text);
            reloj.setIp(textIp.Text);
            reloj.setPuerto(Convert.ToInt32(textPuerto.Text));
            reloj.SetNumero(Convert.ToInt32(textNumero.Text));
 
            if (reloj.GetId() != 0)
            {
                resul = controladorReloj.GuardarReloj(reloj);
            }
            else
            {
                resul = controladorReloj.AltaReloj(reloj);
            }
            if (resul == true)
            {
                MessageBox.Show("Cambio guardado");
                Principal ppal = new Principal();
                ppal.ActualizarTabla();
            }
            else { MessageBox.Show("Error al actualizar los cambios", "Error"); }
            this.Close();
        }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Actualizar listview desde otro form

Publicado por Miguel (91 intervenciones) el 21/06/2016 19:22:12
Hola,
Me parece que el método "ActualizarTabla()" lo tienes que ejecutar después del "ShowDialog()" a tu formulario que modifica/agrega los items. Veo que en el botón "Guardar", luego de mostrar el mensaje "Cambio guardado", creas un formulario principal y lo cargas; no sé porque realizas esto, ya que luego no lo muestras y si quieres actualizar el formulario "padre" desde el formulario hijo no sería así. Una cosa más, a tu método "ActualizarTabla()" le hace falta un "listRelojes.Items.Clear()" antes de "foreach (Reloj reloj ...", porque si no cada vez que actualices los datos se duplicarán todos tus registros en la lista.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Actualizar listview desde otro form

Publicado por Edgar Giovanni Andrade Santamaría (10 intervenciones) el 23/06/2016 08:51:02
bueno imagino que dentro del metodo que definas en la interfaz le pasaras los datos del segundo form al primero y es ahi donde ejecutaras la consulta sql para cargar el listview

en ese caso lo que tienes que hacer es eejcutar la consulta y teniendo el datareader, lo recorer fila a fila y lo vas cargando como item en el listview

1
2
3
4
5
6
7
while(reder.Read())
{
   LitViewItem item = new ListViewItem(Convert.ToString(reader["campo1"]), 0);
 
   item.SubItems.Add(Convert.ToString(reader["campo2"]));
   item.SubItems.Add(Convert.ToString(reader["campo3"]))
}

como veras de esta forma es como cargas el listview
recuerda poner la propiedad View= Details
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar