1 votos

Eliminar filas marcadas de GridView

Tengo un GridView al que le he añadido un ItemTemplate para mostrar una casilla de verificación para cada fila. Estoy tratando de simplemente eliminar las filas marcadas en el archivo de código detrás. Mi problema es que mi código detrás no detecta la casilla de verificación. Es muy extraño porque siento que no he cambiado nada, pero el código ya no funciona (funcionaba hace dos días, pero guardé estos cambios localmente - no los subí a TFS).

GridView (EDITADO PARA INCLUIR ENLACE):

  <%--Data Grid--%>

<%--Botón de Eliminar--%>

<%--Fuentes de Datos--%>

Código trasero:

[WebMethod]
protected void DeleteRows(object sender, EventArgs e)
{
    dbCRUD delete = new dbCRUD();
    foreach(GridViewRow grd in Grid_Recipe.Rows)
    {
        if(grd.RowType == DataControlRowType.DataRow)
        {
            if((grd.FindControl("deleteCheckbox") as CheckBox).Checked)
            {
                string id = Grid_Recipe.DataKeys[grd.RowIndex].Value.ToString();
                //int intID = Convert.ToInt32(Grid_Recipe.SelectedDataKey.Value);
                int intID = int.Parse(id);
                if(delete.DeleteRecord(intID) == 1)
                {
                    resultsDelete.Text = "Excepción SQL";
                    resultsDelete.Visible = true;
                    break;
                }
                else if(delete.DeleteRecord(intID) == 2)
                {
                    resultsDelete.Text = "Excepción no SQL";
                    resultsDelete.Visible = true;
                    break;
                }
                else
                {
                    resultsDelete.Text = "Registro(s) eliminado";
                    resultsDelete.Visible = true;
                }
            }
        }
    }
}

¿Hay algo en mi código que impida detectar la casilla de verificación? He puesto un breakpoint en el método y llego a donde comprueba la validación de la casilla de verificación, pero después de recorrer cada fila, no se detectan filas. ¡Gracias de antemano!

1voto

Kelsey Puntos 26456

Me parece que en el servidor no va a saber nada sobre tu GridView porque tienes EnableViewState="False" configurado.

Cambia eso a true y mira si ayuda. Si no, verifica cómo estás enlazando el GridView y asegúrate de que no lo estás volviendo a enlazar a un valor null en tu función Page_Load o algo así antes de que se ejecute la función DeleteRows. Publica cómo lo estás enlazando, ya que eso ayudará a diagnosticar el problema.

También recientemente he publicado una respuesta a una pregunta similar que puedes encontrar aquí: iterar a través de las filas de un gridview al hacer clic en un botón

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X