//PRIMER METODO EN EJECUTARCE AL CREARCE EL FORMULARIO //ENCARGADO DE ADAPTAR LA GRILLA PARA CONTENER TODO TIPO DE TABLAS public void Inicializar(string tabla, bool claveSecuencia) { Tabla = tabla; ClaveSecuencia = claveSecuencia; _filtroCampos = ""; _filtroValores = ""; _Campo = ""; _Checks = ""; _Combos = ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); /* * SE RECUPERA LAS COLUMAS DE LA TABLA QUE SE VA A CARGAR * DETALLES COLUMNAS TABLAS TRAE MUCHA INFORMACION * DE LOS CAMPOS DE LA BASE DE DATOS Y DE LAS TABLAS * A TRABAJAR, CONTROLAR BIEN CUALES SON ESOS DATOS, * Y INDICAR PARA QUE SIRVE CADA CAMPO, COMO VA A MODIFICAR LA EJECUCION DEL PROGRAMA? */ ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); /* DE LAS COLUMAS QUE SE RECUPERAN DE LA BD, SE CONTROLA QUE TIPO DE CONTROL ES * EN EL CASO DE SER COMBO O CHECK * * NO SE QUE SE HACE CON LAS VARIABLES _Combos y _Check * TAMBIEN SE HACE LA CARGA DE LA QUERY QUE LUEGO BUSCARA LOS DATOS */ foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctNroOrden == 1) { // ESTO ES PARA PODER GUARDAR EL NOMBRE DE LA COLUMNA ColumnaClave = oDetalle.DctDescripcion; } //ACA SE PUEDEN CARGAR MAS CONTROLES PARA DARLE VERSATILIDAD A LA GRILLA switch (oDetalle.DctTipoControl) { // ESTO ESTOY MUY SEGURO QUE SE PUEDE OMITIR TOTAL MENTE...... case "COMBO": { _Combos += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; break; } case "CHECK": { _Checks += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; break; } } _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.comboEstado.Text + "&"; } } //FIN DEL FOREACH /* * HASTA ACA SE ENCARGO DE PREPARAR LOS DATOS PARA DESPUES CARGAR LA GRILLA */ //SE CARGA EL COMBO DE BUSQUEDA oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion"); if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } /* * ACA HACE LA BUSQUEDA EN LA BASE DE DATOS */ TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); //CARGAR GRILLA _vista.grilla.AutoGenerateColumns = false; _vista.cantidad = oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; //SUBRUTINA ENCARGADA DE QUE LA GRILLA TENGA LAS COLUMNAS DEL TIPO NECESARIA generarDT(ListDetalle); //SUBRUTINA QUE ENLAZA LOS DATOS RECUPERADOS CON LA GRILLA YA PREPARADA vincularDT(_vista.grilla); //LA ULTIMA COLUMNA ES EL CONTROL PARA SABER SI LA FILA FUE CREADA, MODIFICADA O ELIMINADA _vista.grilla.Columns.Add("ALTERADO", ""); _vista.grilla.Columns["ALTERADO"].Visible = false; if (claveSecuencia) { _vista.grilla.Columns[ColumnaClave].ReadOnly = true; } //ESTE METODO SE UTILIZARA PARA ACOMODAR LAS COLUMNAS, CELDAS O CUALQUEIR OTRA PROPIEDAD VISUAL //DE LA GRILLA, ORIENTADA A PERSONALIZAR MAS LA GRILLA DEPENDIENDO LA TABLA QUE SE LE PIDA // TRABAJAR presonalizarGrilla(_vista.grilla, tabla); //SETEA TODAS LAS ROWS EN ESTADO SIN MODIFICACION foreach (DataGridViewRow row in _vista.grilla.Rows) { if (!row.IsNewRow) { row.Cells["ALTERADO"].Value = "0"; } } // Obtengo nombre de la tabla Tablas otabla = new Tablas(); otabla = oTablasBus.TablasGetById(tabla); // Obtengo la estructura de la tabla con la que cargue la grilla //LA ESTRUCTURA SE ENCARGA DESPUES DE AYUDAR A PASAR LOS VALORES A LA CLASE BISSNES DE TABLAS PARA REALIZAR LOS CAMBIOS EN LA BASE DE DATOS _estructuraTablaGrilla = oTablasBus.Estructura(otabla.TabNombre); // Si la clave es secuencia no permito editarla, caso contrario si // La clave se edita unicamente cuando se agrega un nuevo registro, esto se habilita en addnew // cuando doy confirmar cambios se debe validar cada uno de los campos teniendo en cuenta los tipos de datos de la tabla y el mapeo }
public void Inicializar(string tabla, string campoClave, bool claveSecuencia) { _filtroCampos = ""; _filtroValores = ""; _Campo = ""; _Checks = ""; _Combos = ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctTipoControl == "COMBO") { _Combos += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; } if (oDetalle.DctTipoControl == "CHECK") { _Checks += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; } //else _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.comboEstado.Text + "&"; } if (campoClave == oDetalle.DctDescripcion) { columnaClave = oDetalle.DctColumna; } } oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion"); if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); _vista.cantidad = oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; int indice = 0; foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctTipoControl == "COMBO") { DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); cmb.HeaderText = oDetalle.DctDescripcion; cmb.Name = oDetalle.DctColumna; // CARGAR LA LISTA DE VALORES DEL COMBO switch (oDetalle.DctListaValores) { case "AREAS": { AreasBus oAreaBusCombo = new AreasBus(); cmb.DataSource = oAreaBusCombo.AreasGetAll(); cmb.DisplayMember = "AreDescripcion"; cmb.ValueMember = "AreCodigo"; break; } default: break; } _vista.grilla.Columns.Add(cmb); foreach (DataGridViewRow row in _vista.grilla.Rows) { row.Cells[_vista.grilla.ColumnCount - 1].Value = row.Cells[indice].Value; } _vista.grilla.Columns[indice].Visible = false; } if (oDetalle.DctTipoControl == "CHECK") { DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn(); chk.HeaderText = oDetalle.DctDescripcion; chk.Name = oDetalle.DctColumna; _vista.grilla.Columns.Add(chk); foreach (DataGridViewRow row in _vista.grilla.Rows) { row.Cells[_vista.grilla.ColumnCount - 1].Value = Equals(row.Cells[indice].Value, "S"); } _vista.grilla.Columns[indice].Visible = false; } indice++; } _vista.grilla.Columns.Add("Estado", ""); _vista.grilla.Columns[campoClave].ReadOnly = true; _vista.grilla.Columns[_vista.grilla.ColumnCount - 1].Visible = false; foreach (DataGridViewRow row in _vista.grilla.Rows) { // if (!row.IsNewRow) row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } // Obtengo nombre de la tabla Tablas otabla = new Tablas(); otabla = oTablasBus.TablasGetById(tabla); // Obtengo la estructura de la tabla con la que cargue la grilla _estructuraTablaGrilla = oTablasBus.Estructura(otabla.TabNombre); // Si la clave es secuencia no permito editarla, caso contrario si // La clave se edita unicamente cuando se agrega un nuevo registro, esto se habilita en addnew // cuando doy confirmar cambios se debe validar cada uno de los campos teniendo en cuenta los tipos de datos de la tabla y el mapeo }