post icon

Insertar, Actualizar y Eliminar en AspxGridView/Devexpress por código

Ya que venimos viendo como usar los ASPxGridView de DevExpress en artículos anteriores aprovechamos para hacer los ABM o CRUD desde la grilla mediante código manual.

El código que verán abajo no es completo, porque no muestra como se conecta precisamente a la BD, pero si muestra como obtener los valores nuevos y viejos de la grilla. Además verán que están creados con las n-capas que veíamos meses atrás.

protected void grillaBancos_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
var banco = new Banco();
banco.ProveedorTarjeta = e.NewValues["IdProveedorTarjeta"] != null ? new ProveedorTarjeta() { IdProveedorTarjeta = Convert.ToInt16(e.NewValues["IdProveedorTarjeta"]) } : new ProveedorTarjeta() { IdProveedorTarjeta = null };
banco.EmisoraTarjeta = e.NewValues["IdEmisoraTarjeta"] != null ? new EmisorTarjeta() { IdEmisorTarjeta = Convert.ToInt16(e.NewValues["IdEmisoraTarjeta"]) } : new EmisorTarjeta() { IdEmisorTarjeta = null };
banco.ProcesadoraTarjeta = e.NewValues["IdProcesadoraTarjeta"] != null ? new ProcesadoraTarjeta() { IdProcesadora = Convert.ToInt16(e.NewValues["IdProcesadoraTarjeta"]) } : new ProcesadoraTarjeta() { IdProcesadora = null };

banco.Descripcion = e.NewValues["Descripcion"] == null ? null : e.NewValues["Descripcion"].ToString();
banco.CodBanco = e.NewValues["CodBanco"].ToString();

banco.Crear(banco);

e.Cancel = true;
grillaBancos.CancelEdit();

CargarGrilla();
}

protected void grillaBancos_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
var banco = new Banco() {IdBanco = Convert.ToInt32(e.Values["IdBanco"])};

banco.Eliminar(banco);

e.Cancel = true;
grillaBancos.CancelEdit();

CargarGrilla();
}

protected void grillaBancos_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
var banco = new Banco();

banco.IdBanco = Convert.ToInt32(e.Keys["IdBanco"]);
banco.ProveedorTarjeta = e.NewValues["IdProveedorTarjeta"] != null ? new ProveedorTarjeta() { IdProveedorTarjeta = Convert.ToInt16(e.NewValues["IdProveedorTarjeta"]) } : new ProveedorTarjeta() { IdProveedorTarjeta = null };
banco.EmisoraTarjeta = e.NewValues["IdEmisoraTarjeta"] != null ? new EmisorTarjeta() { IdEmisorTarjeta = Convert.ToInt16(e.NewValues["IdEmisoraTarjeta"]) } : new EmisorTarjeta() { IdEmisorTarjeta = null };
banco.ProcesadoraTarjeta = e.NewValues["IdProcesadoraTarjeta"] != null ? new ProcesadoraTarjeta() { IdProcesadora = Convert.ToInt16(e.NewValues["IdProcesadoraTarjeta"]) } : new ProcesadoraTarjeta() { IdProcesadora = null };

banco.Descripcion = e.NewValues["Descripcion"].ToString();
banco.CodBanco = e.NewValues["CodBanco"].ToString();

banco.Actualizar(banco);

e.Cancel = true;
grillaBancos.CancelEdit();

CargarGrilla();
}

Comentarios desde Facebook:

  1. avatar
    Your Name UNITED STATES Mozilla Firefox Windows
    3 agosto 2012 at 12:31 #

    Se pueden actualizar las celdas del grid directamente sin necesidad de recargar el datasource? (CargarGrilla)

    Muchas gracias.

  2. avatar
    Isai MEXICO Google Chrome Windows
    20 mayo 2012 at 03:46 #

    Si quiero mandar un error personalizado, por ejemplo para evitar que los valores de un campo se repitan como puedo enviar ese error al componente. Gracias

    • avatar
      Ron PARAGUAY Safari Linux
      20 mayo 2012 at 04:42 #

      Yo lo haría con un unique index

    • avatar
      GeekZero PARAGUAY
      20 mayo 2012 at 05:52 #

      O en sql preguntas if exists (select * from tabla where Id = valor) raiserror(‘valor duplicado’, 16,1) ;

Responder