private void btnBorrar_Click(object sender, EventArgs e) { // Si tenemos registros en la tabla y... // el usuario me confirma que realmente quiere borrar el registro. if ((dataGridView.RowCount > 0) && (MessageBox.Show("¿Realmente quiere borrar el producto seleccionado?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)) { // Creamos una instancia de la clase CProductosBD. CProductosBD productosBD = new CProductosBD(); // Obtenemos la clave principal del producto a borrar. productosBD.Producto_id = Convert.ToInt32(dataGridView.CurrentRow.Cells[0].Value); // Si el producto se borra correctamente. if (productosBD.Borrar()) { // Obtenemos la fila actual. int rowIndex = dataGridView.CurrentCell.RowIndex; // Recargamos y vamos a la fila actual, que corresponderá al siguiente producto. Recargar(rowIndex); } else { // Sino se ha podido borrar, mensaje de error. MessageBox.Show("Al borrar el producto.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void Recargar(int rowIndex = 0) { // Instanciamos la clase CProductosBD. CProductosBD productosBD = new CProductosBD(); // Recargamos el DataGridView asociando el DataSource con los datos devueltos. dataGridView.DataSource = productosBD.Seleccionar(); // Si tenemos datos... if (dataGridView.RowCount > 0) { // Comprobamos que la fila que nos indican no es superior a la cantidad de filas que tenemos. // Si es así, nos posicionamos en la última fila. if (rowIndex >= dataGridView.RowCount) { rowIndex = dataGridView.RowCount - 1; } // Si nos indican una fila negativa, nos posicionamos en la primera. if (rowIndex < 0) { rowIndex = 0; } // Nos posicionamos en la fila indicada. dataGridView.CurrentCell = dataGridView[1, rowIndex]; } }
private void btnAceptar_Click(object sender, EventArgs e) { // Verificamos que todo es correcto antes de proseguir. if (!Correcto()) { return; } // Por defecto, indicamos que se pulsa el botón OK. //DialogResult = DialogResult.OK; // Instanciamos la clase CProductodBD. CProductosBD productosBD = new CProductosBD(); // Le pasamos a cada una de las propiedades los valores correspondientes. productosBD.Producto = txtProducto.Text; productosBD.Categoria_id = (int)cbCategorias.SelectedValue; productosBD.Marca_id = (int)cbMarcas.SelectedValue; productosBD.Precio = Convert.ToDouble(txtPrecio.Value); productosBD.Codigo = Convert.ToInt32(txtCodigo.Value); // Si estamos insertando... if (Producto_id == 0) { // Insertamos y verificamos que todo ha ido bien. if (productosBD.Insertar()) { Producto_id = productosBD.Producto_id; DialogResult = DialogResult.OK; } else { MessageBox.Show("Al insertar el producto.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // Si no se ha podido insertar, devolvemos Cancel. //DialogResult = DialogResult.Cancel; } } else { // y sino, estamos modificando. // Indicamos el producto a modificar. productosBD.Producto_id = Producto_id; // Verificamos que si ha habido un error. if (!productosBD.Editar()) { MessageBox.Show("Al modificar el producto.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // Si no se ha podido modificar, devolvemos Cancel. //DialogResult = DialogResult.Cancel; } else { DialogResult = DialogResult.OK; } } }
private void FProductosModificar_Load(object sender, EventArgs e) { // Instanciamos las clases CCategoriasBD y CMarcasBD. CCategoriasBD categoriasBD = new CCategoriasBD(); CMarcasBD marcasBD = new CMarcasBD(); // Obtenemos todos los registros de la tabla. cbCategorias.DataSource = categoriasBD.Seleccionar(); // Mostramos el valor del campo categoría. cbCategorias.DisplayMember = "categoria"; // Indicamos que le valor seleccionado es la clave primaria. cbCategorias.ValueMember = "categoria_id"; // Para las marcas hacemos lo mismo que para las categorías. cbMarcas.DataSource = marcasBD.Seleccionar(); cbMarcas.DisplayMember = "marca"; cbMarcas.ValueMember = "marca_id"; // Si me indican un producto en concreto, es que queremos modificarlo. if (Producto_id != 0) { // Instanciamos la clase CProductosBD. CProductosBD productosBD = new CProductosBD(); // Buscamos el producto. productosBD.Seleccionar(Producto_id); // Mostramos la clave primaria. txtId.Text = Convert.ToString(productosBD.Producto_id); // El código del producto. txtCodigo.Value = productosBD.Codigo; // El nombre del producto. txtProducto.Text = productosBD.Producto; // Buscamos en el ComboBox el índide de la categoría seleccionada. cbCategorias.SelectedIndex = cbCategorias.FindStringExact(productosBD.Categoria); // cbCategorias.SelectedValue = productosBD.Categoria_id; // Otra forma de asignar el índice. // cbMarcas.SelectedIndex = cbMarcas.FindStringExact(productosBD.Marca); cbMarcas.SelectedValue = productosBD.Marca_id; // Y finalmente, el precio. txtPrecio.Value = Convert.ToDecimal(productosBD.Precio); // Indicamos que estamos modificando. Text = "Productos :: Modificar"; } }
private const float milimetro = 2.83465f; // 1 milímetro son 2.83465 puntos de pantalla. public void Imprimir() { Document document = new Document(); // Documento PDF. document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); // Tamaño de la hoja A4. document.SetMargins(10f * milimetro, // Margen derecho 10 mm ó 1 cm. 10f * milimetro, // Margen izquierdo 10 mm ó 1 cm. 30f * milimetro, // Margen superior 30 mm ó 3 cm. 10f * milimetro); // Margen inferior 10 mm ó cm. try { // Guardaremos el contenido en un fichero "test.pdf" PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(Filename, FileMode.Create)); pdfWriter.PageEvent = new HeaderFooter(); // Indicamos nuestro pie de página personalizado. } catch (Exception ex) { // En caso de nos poder guardar en "test.pdf" lanzamos excepción. throw new Exception("Al guardar el fichero \"" + Filename + "\".\n\n" + ex.Message); } document.Open(); // Abrimos el documentos. try { CProductosBD productos = new CProductosBD(); // Creamos el objeto productos. DataRow[] rows = productos.Seleccionar().Select(); // Seleccionamos todos los productos. PdfPTable tProductos = new PdfPTable(5); // Tabla para mostrar los productos. PdfPCell celdaCabecera = new PdfPCell(); // Celda para la cabecera. PdfPCell celdaDerecha = new PdfPCell(); // Celda para alineación derecha. tProductos.WidthPercentage = 100f; // La tabla tendrá una anchura del 100% //Tabla personalizada //float[] widths = new float[] {50f,20f,10f,10f,10f} va con porcentajes //tProductos.SetWidths(widths); celdaDerecha.HorizontalAlignment = Element.ALIGN_RIGHT; // La celda derecha pues eso a la derecha. celdaDerecha.FixedHeight = 7f * milimetro; celdaCabecera.HorizontalAlignment = Element.ALIGN_CENTER; // La cabecera se alinean al centro, celdaCabecera.BackgroundColor = new BaseColor(Color.LightGray); // con el fondo en gris claro celdaCabecera.FixedHeight = 7f * milimetro; // y una altura de celda de 7 mm. celdaCabecera.Phrase = new Phrase("Código"); // Título de la celda código. tProductos.AddCell(celdaCabecera); // Añadimos la celda. celdaCabecera.Phrase = new Phrase("Producto"); tProductos.AddCell(celdaCabecera); celdaCabecera.Phrase = new Phrase("Categoría"); tProductos.AddCell(celdaCabecera); celdaCabecera.Phrase = new Phrase("Marca"); tProductos.AddCell(celdaCabecera); celdaCabecera.Phrase = new Phrase("Precio"); tProductos.AddCell(celdaCabecera); tProductos.HeaderRows = 1; // La primera fila, la cabecera, se repetirá en cada nueva página. // Para cada una de las filas de nuestra consulta... for (int i = 0; i < rows.Count(); i++) { celdaDerecha.Phrase = new Phrase(rows[i]["Codigo"].ToString()); // Código. tProductos.AddCell(celdaDerecha); // Observar que no lo insertamos directamente porque // lo queremos alinear a la derecha. tProductos.AddCell(rows[i]["Producto"].ToString()); // Producto. tProductos.AddCell(rows[i]["Categoría"].ToString()); // Categoría. tProductos.AddCell(rows[i]["Marca"].ToString()); // Marca. celdaDerecha.Phrase = new Phrase(rows[i]["Precio"].ToString() + " €"); // Precio. tProductos.AddCell(celdaDerecha); } document.Add(tProductos); // Añadimos la tabla al documento. } catch (Exception ex) { // En caso de error lanzamos la excepción con el error que se ha producido. throw new System.Exception("Al generar el archivo \"" + Filename + "\".\n\n" + ex.Message); } finally { document.Close(); // y lo cerramos. } }