Beispiel #1
0
        /* dtTable_CellClick( object sender, DataGridViewCellEventArgs e )
         * Cada vez que se selecciona un registro en el datagrid, se obtiene la información para
         * modificar/eliminar el registro.
         * Si se le da click a un registro, los valores aparecerán en el datagrid de
         * "Agregar/Modificar".
         */
        private void dtTable_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            if (dtTable.Columns["Detalle Compra"] != null && e.ColumnIndex == dtTable.Columns["Detalle Compra"].Index)
            {
                string idCompra = dtTable.Rows[e.RowIndex].Cells[0].Value.ToString();
                string query    = @"SELECT IdDetalleCompra, IdCompra, d.IdMaterial, m.Descripcion, CostoUnitario, Cantidad, Subtotal FROM Taller.DetalleCompra AS d 
INNER JOIN Taller.Material AS m ON d.IdMaterial = m.IdMaterial WHERE IdCompra =" + idCompra;

                if (ventanaRegistros != null)
                {
                    ventanaRegistros.Close();
                }

                ventanaRegistros = new VentanaRegistros(connectionSQL, query);
                ventanaRegistros.Show();
                return;
            }

            List <string> values = GetRowValues(dtTable, e.RowIndex, true);

            dtRow.Rows.Clear();
            dtRow.Rows.Add(values.ToArray());

            //Nombre col + Valor
            List <Tuple <string, string> > registro = new List <Tuple <string, string> >();

            for (int i = 0; i < dtTable.Columns.Count; ++i)
            {
                string nomColumna = dtTable.Columns[i].HeaderText;
                string valor      = dtTable.Rows[e.RowIndex].Cells[i].Value.ToString();

                var reg = new Tuple <string, string>(nomColumna, valor);
                registro.Add(reg);
            }

            for (int i = 0; i < dtRow.Columns.Count; ++i)
            {
                string nomCol = dtRow.Columns[i].HeaderText;
                Tuple <string, string> valor;

                if ((valor = registro.Find(r => r.Item1 == nomCol)) != null)
                {
                    Tabla tabMostrar = tablas[comboBox1.SelectedIndex];

                    if (tabMostrar.AdditionalInfoCols != null && tabMostrar.AdditionalInfoCols.Exists(c => c == i))
                    {
                        dtRow.Rows[0].Cells[i].Value = valor.Item2.ToString() + ": " + tabMostrar.EnumeracionInformacion.Find(en => en.Item1 == int.Parse(valor.Item2)).Item2;
                    }

                    else
                    {
                        dtRow.Rows[0].Cells[i].Value = valor.Item2;
                    }
                }
            }
        }
Beispiel #2
0
        /*
         * ShowTable( int index )
         * Indexa en "tablas" la tabla seleccionada, recupera los registros de la base de datos
         * y los inserta en el datagrid. Se utiliza también para refrescar la vista de los registros.
         */
        private void ShowTable(int index)
        {
            Tabla  tablaMostrar = tablas[index];
            string query;

            dtTable.DataSource = null;
            dtTable.Rows.Clear();
            dtTable.Columns.Clear();

            if (!string.IsNullOrWhiteSpace(tablaMostrar.SelectQuery))
            {
                query = tablaMostrar.SelectQuery;
            }

            else
            {
                query = string.Format("SELECT * FROM Taller.{0}", tablas[index].TableName);
            }

            // crea un adaptador que va a obtener los datos por medio de la conección
            SqlDataAdapter adapter = new SqlDataAdapter(query, connectionSQL);

            tablaMostrar.Clear();
            adapter.Fill(tablaMostrar);
            dtTable.DataSource = tablaMostrar;

            if (tablaMostrar.TableName == "Compra" && dtTable.Columns["Detalle Compra"] == null)
            {
                DataGridViewButtonColumn detalleCompra = new DataGridViewButtonColumn()
                {
                    Name       = "Detalle Compra",
                    HeaderText = "Detalle Compra",
                    UseColumnTextForButtonValue = true,
                    Text = "Detalle"
                };

                dtTable.Columns.Add(detalleCompra);
            }

            dtTable.Refresh();

            //Obtener la información adicional de la tabla.
            if (!string.IsNullOrWhiteSpace(tablaMostrar.AdditionalInfoQuery))
            {
                tablaMostrar.EnumeracionInformacion = new List <Tuple <long, string> >();
                using (SqlDataReader lector = new SqlCommand(tablaMostrar.AdditionalInfoQuery, connectionSQL).ExecuteReader()) {
                    while (lector.Read())
                    {
                        var en = new Tuple <long, string>(lector.GetInt64(0), lector.GetString(1));
                        tablaMostrar.EnumeracionInformacion.Add(en);
                    }
                }
            }

            // Fila de inserción
            dtRow.Columns.Clear();
            int i = tablaMostrar.PK ? 1 : 0;

            for ( ; i < tablaMostrar.NomVariables.Count; i++)
            {
                string columna = tablaMostrar.NomVariables[i];
                if (columna.Contains("Id"))
                {
                    string comboQuery = string.Format("SELECT * FROM Taller.{0}", columna.Substring(2));

                    List <string> columnData = new List <string>();
                    using (SqlCommand command = new SqlCommand(comboQuery, connectionSQL))
                    {
                        using (SqlDataReader reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                long   id     = reader.GetInt64(0);
                                string opcion = id.ToString();

                                if (!string.IsNullOrWhiteSpace(tablaMostrar.AdditionalInfoQuery))
                                {
                                    if (tablaMostrar.AdditionalInfoCols != null && tablaMostrar.AdditionalInfoCols.Exists(col => col == i - 1))
                                    {
                                        opcion += ": " + tablaMostrar.EnumeracionInformacion.Find(e => e.Item1 == id).Item2;
                                    }
                                }

                                columnData.Add(opcion.ToString());
                            }
                        }
                    }

                    var column = new DataGridViewComboBoxColumn
                    {
                        HeaderText = columna,
                        DataSource = columnData
                    };
                    dtRow.Columns.Add(column);
                }
                else
                {
                    dtRow.Columns.Add(columna, columna);
                }
            }

            dtRow.Rows.Add();
        }