none
pasar los campos de un gridview como parámetro RRS feed

  • Pregunta

  • Hola.

    Estoy llenado un gridview (GridView1) desde un excel y  creando  una  tabla  temporal (Esta  tabla  temporal se llena  dependiendo a la  cantidad de campos  que  tenga el excel, ya  que  existe uno con 6 columnas  y otro excel  con 8 columanas)para mostrarlo en otro gridview (GridView2), hasta aquí  todo  bien mi  código es el  siguiente

    public partial class Price : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                lblError.Visible = false;
            }

            protected void btnUpload_Click(object sender, EventArgs e)
            {
                if (FileUpload1.HasFiles)
                {
                    String FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
                    String Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
                    String FolderPath = ConfigurationManager.AppSettings["FolderPath"];
                    String FilePath = Server.MapPath(FolderPath + FileName);
                    FileUpload1.SaveAs(FilePath);
                    Import_To_Grid(FilePath, Extension);
                }
            }
            private void Import_To_Grid(String FilePath, String Extension)
            {
                String conStr = "";
                switch (Extension)
                {
                    case ".xls":
                        conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                        break;
                    case ".xlsx": //Excel 07
                        conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                        break;
                }
                conStr = String.Format(conStr, FilePath, 1);
                OleDbConnection connExcel = new OleDbConnection(conStr);
                OleDbCommand cmdExcel = new OleDbCommand();
                OleDbDataAdapter oda = new OleDbDataAdapter();
                DataTable dt = new DataTable();
                cmdExcel.Connection = connExcel;

                connExcel.Open();
                DataTable dtExcelShema;
                dtExcelShema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                String SheetName = dtExcelShema.Rows[0]["TABLE_NAME"].ToString();
                connExcel.Close();

                connExcel.Open();
                cmdExcel.CommandText = "SELECT * FROM [" + SheetName + "]";
                oda.SelectCommand = cmdExcel;
                oda.Fill(dt);
                connExcel.Close();
                GridView1.DataSource = dt;
                GridView1.DataBind();
                int NoColums = GridView1.HeaderRow.Cells.Count;
                if (NoColums == 6 && rdbPrecioFijo.Checked)
                {
                    DataTable dttable_data = new DataTable();
                    dttable_data = dt;
                    DataTable dtTemp = new DataTable();
                    dtTemp.Columns.Add("Clave Producto");
                    dtTemp.Columns.Add("Producto");
                    dtTemp.Columns.Add("Precio");
                    dtTemp.Columns.Add("Fecha Importacion", typeof(DateTime));
                    dtTemp.Columns.Add("Proveedor");
                    dtTemp.Columns.Add("Tipo Producto");
                    DataRow drAddItem;
                    for (int i = 0; i < dttable_data.Rows.Count; i++)
                    {

                        drAddItem = dtTemp.NewRow();
                        drAddItem[0] = dttable_data.Rows[i]["Clave Producto"].ToString();
                        drAddItem[1] = dttable_data.Rows[i]["Producto"].ToString();
                        drAddItem[2] = dttable_data.Rows[i]["Precio"].ToString();
                        drAddItem[3] = Convert.ToDateTime(dttable_data.Rows[i]["Fecha Importacion"]).ToString();
                        drAddItem[4] = dttable_data.Rows[i]["Proveedor"].ToString();
                        drAddItem[5] = dttable_data.Rows[i]["Tipo Producto"].ToString();

                        dtTemp.Rows.Add(drAddItem);
                    }
                    GridView2.DataSource = dtTemp;
                    GridView2.DataBind();
                }
                else if (NoColums == 8 && rdbPrecioUrner.Checked)
                {
                    DataTable dttable_data = new DataTable();
                    dttable_data = dt;
                    DataTable dtTemp = new DataTable();
                    dtTemp.Columns.Add("Clave Producto");
                    dtTemp.Columns.Add("Codigo Urner");
                    dtTemp.Columns.Add("Producto");
                    dtTemp.Columns.Add("Precio Importacion");
                    dtTemp.Columns.Add("Fecha Importacion");
                    dtTemp.Columns.Add("Tipo Producto");
                    dtTemp.Columns.Add("Formula");
                    dtTemp.Columns.Add("Proveedor");
                    DataRow drAddItem;
                    for (int i = 0; i < dttable_data.Rows.Count; i++)
                    {
                        drAddItem = dtTemp.NewRow();
                        drAddItem[0] = dttable_data.Rows[i]["Clave Producto"].ToString();
                        drAddItem[1] = dttable_data.Rows[i]["Codigo Urner"].ToString();
                        drAddItem[2] = dttable_data.Rows[i]["Producto"].ToString();
                        drAddItem[3] = dttable_data.Rows[i]["Precio importacion"].ToString();
                        drAddItem[4] = dttable_data.Rows[i]["Fecha Importacion"].ToString();
                        drAddItem[5] = dttable_data.Rows[i]["Tipo Producto"].ToString();
                        drAddItem[6] = dttable_data.Rows[i]["Formula"].ToString();
                        drAddItem[7] = dttable_data.Rows[i]["Proveedor"].ToString();
                        dtTemp.Rows.Add(drAddItem);
                    }
                    GridView2.DataSource = dtTemp;
                    GridView2.DataBind();
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text = "La configuracion elegida no es  correcta, Pongase en contacto con el administrador del  sistema.";
                }
            }

        }

    Bien, lo que necesito es tomar los  datos del GridView1, específicamente  la clave de producto para ir  ala tabla  de productos y  buscar el  id de ese producto, Tipo de producto ir  ala  tabla TipoProducto y buscar el id de ese tipo de producto (el excel trae  el nombre del  tipo de producto), proveedor igual  ir  a la  tabla de proveedores y  buscar el id de la  tabla de proveedores (el excel trae el nombre del proveedor ) y una  obtenido  los  id llenar el GridView2 con los  datos del  GridView1 mas  los  id`s obtenidos para  después  insertar esa  información una  tabla  (tExportaciones) que  tiene los campos (id, codigo_produc, idProduc, codExterno, Nombre Producto, Precio_Inportado, Fecha_Importacion, idTipoProducto, Formula, Id_Proveedor)

    espero sus  comentarios,

    Gracias!


    Saludos!

    miércoles, 27 de junio de 2018 22:04

Todas las respuestas

  • Los valores que busca los tiene en la variable dt, que es la que usa para vincular a GridView1.  No piense en "recorrer el GridView".  Piense en recorrer la fuente de datos, que es dt.  Veo que sabe cómo recorrer un DataTable, así que imagino que no necesita ayuda con eso.

    Igual, cuando quiera comparar con los datos de GridView2, no piense en que tiene que recorrer el GridView, piense en recorrer el DataTable correspondiente al GridView2.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 28 de junio de 2018 0:54
    Moderador
  • Gracias, por  tu  aporte, me  podrías dar  un ejemplo mas  o menos  como hacerlo, teóricamente lo entendí, pero en código  no logre hacerlo

    Saludos! 


    Saludos!

    jueves, 28 de junio de 2018 21:22
  • Ok, pero muéstreme unos datos de ejemplo de cada grilla.  Unos 4 o 5 registros por grilla está bien.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    viernes, 29 de junio de 2018 2:43
    Moderador
  • Ok, esta  bien. en el el  caso del excel  que es para precios  directos 

    Clave producto | producto | precio | Fecha Importacion | Proveedor | Tipo Producto

          26059       | Pastas     | 0.245 |      29/06/2018      | pastasmx |      Fresco

          26059       | pollo       | 0.325 |      29/06/2018  | impotamx |      congelado

          34089       | Pastas     | 0.245 |      29/06/2018      | pastasmx |      Fresco

          34089       | Pastas     | 0.245 |      29/06/2018      | pastasmx |      Fresco

    Para el otro  archivo excel que  quiero  trabajar trae lo siguiente.


    ClaveProducto|CodigoU|producto|Precio|FechaImportacion|TipoProducto|Formula|Proveedor

           26058     | 508     |Jamon | 0.345|29/06/2018  |      Fresco    | prec +0,23| Jamonmx

           29058      | 503      | Pollo| 0.987|      29/06/2018  |      congelado| prec *00.45 *.2| pollomx

           29345     | 709| pastas| 0,234|      29/06/2018  |      fresco| prec *.2 /.34|Pastasmx

    esos  es lo que  traen mis archivos de excel, con esa información pretendo ir  alas tabla producto, tipoproducto y proveedores a traer  los  id's respectivamente para  insertarlos  en una  nueva  tabla que esta relacionada. 

    Saludos!

     

    viernes, 29 de junio de 2018 13:27