lunes, 9 de septiembre de 2013

Tips Para C#

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