Para todos los programadores adictos a las Grid, aqui les traigo un metodo sencillo de agregar Items.
private void AgregarArticulo() {
string estado = hidEstadoArticulo.Value;
List<movimiento_detalle> lista = ActualizarGridArticulo(estado);
if (estado.Equals("N"))
{
string[] patron = { "<@ARTICULO@>" };
string[] datos = hidListaArticulo.Value.Split(patron, System.StringSplitOptions.None);
foreach (string s in datos)
{
if (s != "")
{
movimiento_detalle item = ObtenerItemArticulo(s);
if (item != null)
{
lista.Add(item);
}
}
}
}
FillGridDetalle(lista);
hidAccion.Value = "";
hidEstadoArticulo.Value = "";
hidFilaEditar.Value = "";
}
private movimiento_detalle ObtenerItemArticulo(string articulo_info)
{
if (articulo_info == "") return null;
movimiento_detalle item = new movimiento_detalle();
string[] datos = articulo_info.Split('|');
int i = -1;
++i;
item.Id_articulo = Convert.ToInt32(datos[i]);
++i;
item.Articulo_des = datos[i];
return item;
}
private List<movimiento_detalle> ActualizarGridArticulo(string estado)
{
List<movimiento_detalle> lista = new List<movimiento_detalle>();
int filas = rgDetalle.Rows.Count;
for (int i = 0; i < filas; i++)
{
GridViewRow r = rgDetalle.Rows[i];
if (r.RowType == DataControlRowType.DataRow)
{
Label lblIdDetalle = (Label)r.FindControl("lblIdDetalle");
movimiento_detalle item = new movimiento_detalle();
if (estado.Equals("D") && hidFilaEditar.Value.ToString().Equals(lblIdDetalle.Text)) item = null;
else
{
int id_articulo = Convert.ToInt32(((Label)r.FindControl("lblIDArticulo")).Text);
item.Articulo_des = ((Label)r.FindControl("lblArticuloDes")).Text;
item.Cantidad = Convert.ToInt32(((TextBox)r.FindControl("txtCantidad")).Text.Trim());
}
if (item != null) lista.Add(item);
}
}
return lista;
}
Y para recuperar los datos:
private SCM_ORDEN_COMPRA_DETALLEList ObtenerDatosListaArticulo(int id_empresa)
{
SCM_ORDEN_COMPRA_DETALLEList lista = new SCM_ORDEN_COMPRA_DETALLEList();
int filas = dgArticulo.Rows.Count;
int numero_fila = 0;
for (int i = 0; i < filas; i++)
{
GridViewRow r = dgArticulo.Rows[i];
if (r.RowType == DataControlRowType.DataRow)
{
TextBox txtMontoUnitario = (TextBox)r.FindControl("txtMontoUnitario");
TextBox txtCantidadSolicitada = (TextBox)r.FindControl("txtCantidadSolicitada");
TextBox txtReferencia = (TextBox)r.FindControl("txtReferencia");
DropDownList ddlCentroActividad = (DropDownList)r.FindControl("ddlCentroActividad");
DropDownList ddlUnidadMedida = (DropDownList)r.FindControl("ddlUnidadMedida");
DropDownList ddlIGV = (DropDownList)r.FindControl("ddlIGV");
Label lblIDArticulo = (Label)r.FindControl("lblIDArticulo");
Label lblIDActivo = (Label)r.FindControl("lblIDActivo");
SCM_ORDEN_COMPRA_DETALLE item = new SCM_ORDEN_COMPRA_DETALLE();
int id_tipo_detalle = Funciones.CheckInt(((Label)r.FindControl("lblIdTipoDetalle")).Text);
int id_articulo = Funciones.CheckInt(lblIDArticulo.Text);
int id_activo_fijo = Funciones.CheckInt(lblIDActivo.Text);
item.ID_TIPO_DETALLE = id_tipo_detalle;
decimal monto_unitario = Funciones.CheckDecimal(txtMontoUnitario.Text.Trim());
item.MONTO_UNITARIO_REAL_MN = monto_unitario;
item.MONTO_UNITARIO_MN = monto_unitar;
item.REFERENCIA = txtReferencia.Text.Trim().ToUpper();
item.CON_IGV = ddlIGV.SelectedValue;
item.ID_EMPRESA = id_empresa;
item.ID_ORDEN_COMPRA_DETALLE = ++numero_fila;
lista.Add(item);
}
}
return lista;
}
No hay comentarios:
Publicar un comentario