//-->Método BuscarNombre //----------------------------------------------------------------------------------------------- private void BuscarNombre() { //Hace lo mismo que el procedimiento Mostrar pero la diferencia es que aquí si le estamos enviado //un valor : BuscarNombre(this.txtBuscar.Text) obviamente el nombre que queremos buscar. this.dataListado.DataSource = NFamilias.BuscarNombre(this.txtBuscar.Text); this.OcultarColumnas(); lblTotal.Text = "Total de Registros: " + Convert.ToString(dataListado.Rows.Count); }
//--> BORRADO de registros // // MUCHO OJO AL HACER COPY-PASTE DEL OTRO PROGRAMA, SI NO SE EJECUTA EL EVENTO A LA HORA DE ESTARLO PROGRAMANDO // NO LO REGISTRA EN EL FICHERO FrmFamilias.Designer.cs Y POR LO TANTO AUNQUE LO TENGA COPIADO NO VA A FUNCIONAR // SALVO QUE A MANOPLA MODIFIQUE EL CODIGO para ese ejemplo lo he dejado con el 1 btnEliminar_Click_1 // // ES DECIR HAY QUE HACER EL DBL-CLICK EN EL CONTROL PARA QUE QUEDE EN EL CODIGO REGISTRADO private void btnEliminar_Click_1(object sender, EventArgs e) { try { //Variable de tipo DialogResult entiendo que sire para capturar datos de preguntas al usuario DialogResult Opcion; //Tipo de mensaje que va a mostrar al usuario los botones SI o No Opcion = MessageBox.Show("Realmente Desea Eliminar los Registros", "Sistema de Ventas", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (Opcion == DialogResult.OK) //Si es que SI, que ok { string Codigo; string Rpta = ""; //->Bucle para recorrerse todo el GRID y mira que esta marcado para borrarlo.....este sistema no vale para muchos registros // si cada vez que va a borrar se tiene que recorrer todo el GRID menuda mierder foreach (DataGridViewRow row in dataListado.Rows) { if (Convert.ToBoolean(row.Cells[0].Value)) //Pregunta por el valor de la columna cero del GRID { Codigo = Convert.ToString(row.Cells[1].Value); //Trinca el valor de la columna 1 es decir el IdFamilia //Envia el codigo al metodo ELIMINAR de la CapaNegocio de de Familias, OjO conviertiendo a Int que es como //es el tipo de campo en la tabla Familias Rpta = NFamilias.Eliminar(Convert.ToInt32(Codigo)); //Utiliza EQUALS para comparar cadenas de texto en vez de hacerlo a machete : if Rpta == "OK" if (Rpta.Equals("OK")) { this.MensajeOk("Se Eliminó Correctamente el registro"); } else { this.MensajeError(Rpta); } } } //-->Para volver a pintar el GRID con los cambios this.Mostrar(); } } catch (Exception ex) { MessageBox.Show(ex.Message + ex.StackTrace); } }
//-->Método Mostrar //------------------------------------------------------------------------------------------- private void Mostrar() { //ESCALADO : Para pintar la información en el Grid (dataListado.DataSource) // //Vamos a llamar a la clase NFamilias a su metodo Mostrar (CAPA NEGOCIO) // //El metodo mostar lo que hace es llamar al metodo Mostrar de la clase DFamilias() (CAPA DATOS) // //EL Metodo Mostrar de la capa datos lo que hace es llamar al procedimiento almacenado que creamos // el "spMostrar_familila"; que es el que finalmente captura la información en la base de datos //ESCALADO : //CAPA PRESENTACION llama a CAPA NEGOCIO que llama a CAPA DATOS que conecta con BB.DD this.dataListado.DataSource = NFamilias.Mostrar(); this.OcultarColumnas(); //-->Pintamos el total de registros : OjO el count es int tenemos que convertirlo a String lblTotal.Text = "Total de Registros: " + Convert.ToString(dataListado.Rows.Count); }
//----------------------------------------------------------------------------------------------------------------- // Este evento es el que vamos a utilizar para llevar la info del Grid al formulario de detalle // // OJO RECORDAR : Este es el evento del doble click del Grid que se crea desde la ventana de propiedades // del objeto, del Grid private void dataListado_DoubleClick(object sender, EventArgs e) { //-->Hacer el Convert los valores que llegan del Grid llegan como Object // el CurrentRow.Cells captura lo que tiene la celda actual //->Le he indicado todos los campos para que me lleve todos los valores a la solapa del detalle this.txtidCodArti.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["idCodArti"].Value); this.txtcDetalle.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["cDetalle"].Value); this.txtIdCodFam.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["idCodFam"].Value); this.txtnPvP.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["nPvP"].Value); this.txtnStock.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["nStock"].Value); this.txtidTipoIva.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["idTipoIva"].Value); this.txtcCodigoBar.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["cCodigoBar"].Value); //->Recuperacion de imagenes en VIDEO 15 minuto 04:00 aprox) //--------> TRATAMIENTO INFORMACION LUPA <------------------------------------------------------------------------------------------- //Esto es para capturar el valor de lupa this.txtIdCodFam.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["idCodFam"].Value); //CAGATOR : el profe no busca los valores de otras tablas cuando son lupas, con el diseño que tiene se apaña ya que utiliza // los nombres y no los codigos. //RESOLUCION : Escalo la información llamo a la capa negocios esta llama a la capa datos para mirar en la BB.DD(tabla) this.dataListado.DataSource = NFamilias.Mostrar(); this.txtNombreFamilia.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["cNombreFamilia"].Value); //Vuelvo a colocar el foco en los Artículos que sino se queda apuntando a las Familias this.dataListado.DataSource = NArticulo.Mostrar(); //-> Para que pinte la Solapa/folder/TabPage 1 que imagino es la del detalle, la del grid debe ser la 0 this.tabControl1.SelectedIndex = 1; //---------------------------------------------------------------------------------------------------------------------------------- }
private void btnGuardar_Click(object sender, EventArgs e) { try //Control de errores bien.... { //-->VALIDACION DE CAMPOS. NOTA en el curso de C# ví que esto se puede hacer en las propiedades GET/SET //---------------------------------------------------------------------------------------------------- string rpta = ""; if (this.txtNombre.Text == string.Empty) //Si está vacía y como es un campo obligatorio, pues hay que meterlo { //-->Este metodo lo tengo en este mismo módulo MensajeError("Faltan por indicar datos, serán remarcados"); //--Vamos a indicar el mensaje a mostrar cuando salga el error. errorIcono.SetError(txtNombre, "Indique un Nombre"); } else //El textBox llega con valor, { if (this.IsNuevo) //Es un alta ?? { //-->Vamos a llamar al Metodo Insertar de la CapaNegocio enviandole los valores para insertar en la bb.dd rpta = NFamilias.Insertar(this.txtNombre.Text.Trim().ToUpper()); //Trim() quitar espacios - ToUpper todo en mayúsculas } else //Es una modificacion PARECE QUE ESTA MODIFICANDO TODOS !!! { //-->Vamos a llamar al Metodo Editar de la CapaNegocio enviandole los valores rpta = NFamilias.Editar(Convert.ToInt32(this.txtIdFamilias.Text), this.txtNombre.Text.Trim().ToUpper()); } //-->Ahora vamos a ver si la operación tuvo éxito o no, el "OK" que estamos poniendo aquí es el que está // indicado en la CAPADATOS en los metodos // Insertar y Editar de esta forma : rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; // // Por eso pongo OK sino pondría lo que tuviera puesto... if (rpta.Equals("OK")) //Comparando cadenas con : Equals() { if (this.IsNuevo) { this.MensajeOk("Se Insertó de forma correcta el registro"); } else { this.MensajeOk("Se Actualizó de forma correcta el registro"); } } else //Si no han tenido éxito la inserción o modificacion ERROR { //-->Vamos a enviar al error el valor de rpta que va a ser lo que tengo puesto en la CAPADATOS this.MensajeError(rpta); } //Borra la pelotilla del error si estuviera errorIcono.Clear(); //->Una vez insertado el registro dejamos las variables como estaban. this.IsNuevo = false; this.IsEditar = false; this.Botones(); this.Limpiar(); this.Mostrar(); } } catch (Exception ex) { MessageBox.Show(ex.Message + ex.StackTrace); } }