[SOLUCIONADO] el indice estaba fuera del intervalo en el lenguaje de c#

Iniciado por jaz123, Septiembre 26, 2019, 06:08:30 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

tengo un datagridview y dentro de el tengo botones a los cuales les estoy dando una funcion, pero a la hora de dar click en el boton me sale ese error
este es mi codigo
Código: php
 private void DgvPersonaJaciel_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex > -1)
                {
                    if (this.dgvPersonaJaciel.Columns["btnEditarJaciel"].Index == e.ColumnIndex)
                    {
                        PersonaManagerJaciel viewJaciel = new PersonaManagerJaciel();
                        ejemploJaciel.PersonaJaciel nuevoJaciel = (ejemploJaciel.PersonaJaciel)this.dgvPersonaJaciel.SelectedRows[0].DataBoundItem;
                        bool resultadoJaciel = viewJaciel.setFormJaciel(this, (ejemploJaciel.PersonaJaciel)this.dgvPersonaJaciel.SelectedRows[0].DataBoundItem);
                        if (resultadoJaciel)
                        {
                            ejemploJaciel.PersonaJaciel[] personaJaciel = exampleJaciel.consultarGlobalPersonaJaciel();
                            this.dgvPersonaJaciel.DataSource = personaJaciel;
                        }
                    }
                    if (this.dgvPersonaJaciel.Columns["btnEliminarJaciel"].Index == e.ColumnIndex)
                    {
                        ejemploJaciel.PersonaJaciel personitaJaciel = new ejemploJaciel.PersonaJaciel();
                        ejemploJaciel.PersonaJaciel eliminarPersonaJaciel = (ejemploJaciel.PersonaJaciel)this.dgvPersonaJaciel.SelectedRows[0].DataBoundItem;
                        personitaJaciel.IdJaciel = eliminarPersonaJaciel.IdJaciel;
                        if (exampleJaciel.eliminarPersonaJaciel(personitaJaciel))
                        {
                            MessageBox.Show("Eliminado Correctamente");
                        }
                        else
                        {
                            MessageBox.Show("El usuario se encuentra en uso por el sistema");
                        }
                        this.buscarJaciel();
                    }
                    if (this.dgvPersonaJaciel.Columns["btnDireccionJaciel"].Index == e.ColumnIndex)
                    {
                        ejemploJaciel.PersonaJaciel agregarDireccionJaciel = (ejemploJaciel.PersonaJaciel)this.dgvPersonaJaciel.SelectedRows[0].DataBoundItem;
                        frmDireccionPrincipalJaciel showJaciel = new frmDireccionPrincipalJaciel();
                        bool resultadoJaciel = showJaciel.setFormJaciel(this, agregarDireccionJaciel);
                    }
                }
            }
            catch (Exception _e)
            {
                MessageBox.Show(_e.Message);
                //throw _e;
            }
        }

Septiembre 26, 2019, 09:17:58 AM #1 Ultima modificación: Septiembre 26, 2019, 09:44:14 AM por Solid Water
Creo que el problema es por que haces:

this.dgvPersonaJaciel.SelectedRows[0].DataBoundItem

Y no hay ninguna fila seleccionada.
Yo creo que tu quieres operar sobre la misma fila del boton para eso usa:

this.dgvPersonaJaciel.Rows[e.RowIndex].DataBoundItem

De otro modo chequea si existe alguna fila seleccionada preguntando si

if(dgvPersonaJaciel.SelectedRows.Count > 0)

Saludos,