frmPerfilGrid.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 
10 namespace sage.ew.perfiles.Forms
11 {
15  public partial class frmPerfilGrid : sage.ew.formul.FormBase
16  {
17  # region 1. Declaración de variables
18  // Creamos alguna propiedad
23  public bool _Aceptar = false;
24 
25  private DataTable _dtColumnas = null; // PARTE 78159
26 
27  # endregion 1. Declaración de variables
28 
29  # region 2. Constructor
30  public frmPerfilGrid()
34  {
35  InitializeComponent();
36 
37  this._MenuOpcionesBoton = false; //PE 92820 - el botó d'accessos, favoritos no ha de sortir
38 
39  // Cargar columnas de la grid
40  this.Configurar_Grid();
41  }
42  # endregion 2. Constructor
43 
44  # region 3. Métodos privados
45  private void Configurar_Grid()
46  {
47  // No dejamos mover las columnas
48  this.grManteGrid.AllowUserToOrderColumns = false;
49 
50  // PARTE 78159. Crearemos el datatable con la misma estructura
51  _dtColumnas = PROFILES.dtColumnas.Clone();
52 
53  // Filtramos la columna de unidades que siempre debe de ser visible
54  DataRow[] ldrOrden;
55  //PE-86974 Trato el _Tipodoc 3 (facturas) como si fuera un albarán.
56  if (PROFILES._Tipodoc == 1 || PROFILES._Tipodoc == 3)
57  //PE-86974 Añado exclusion de Cajas servidas para albaranes y facturas
58  ldrOrden = PROFILES.dtColumnas.Select("Nombre_Columna <> 'Servidas' AND Nombre_Columna <> 'Cajaserv'", "DisplayIndex");
59  else
60  ldrOrden = PROFILES.dtColumnas.Select("Nombre_Columna <> 'Vendedor' AND Nombre_Columna <> 'Puntos'", "DisplayIndex"); // PARTE 79030
61 
62  foreach (DataRow ldRow in ldrOrden)
63  {
64  _dtColumnas.ImportRow(ldRow);
65  }
66 
67  _dtColumnas.AcceptChanges();
68 
69  ldrOrden = null;
70 
71  // Vamos a ver lo que nos interesa presentar
72  // this.grManteGrid.DataSource = PROFILES.dtColumnas;
73  this.grManteGrid.DataSource = _dtColumnas;
74  // FPARTE 78159
75 
76  this.grManteGrid.Columns["Seleccion"].DataPropertyName = "Seleccion";
77  this.grManteGrid.Columns["Seleccion"].HeaderText = "Selección";
78  this.grManteGrid.Columns["Seleccion"].Width = 60;
79 
80  // Ocultamos la columna de definició de la columna
81  this.grManteGrid.Columns["Nombre_Columna"].Visible = false;
82  this.grManteGrid.Columns["DisplayIndex"].Visible = false;
83  this.grManteGrid.Columns["Visible"].Visible = false;
84 
85  this.grManteGrid.Columns["Titulo"].DataPropertyName = "Titulo";
86  this.grManteGrid.Columns["Titulo"].HeaderText = "Definición";
87  this.grManteGrid.Columns["Titulo"].Width = 200;
88  this.grManteGrid.Columns["Titulo"].ReadOnly = true; // No se permite modificar nombre.
89 
90  this.grManteGrid.Columns["Ancho"].DataPropertyName = "Ancho";
91  this.grManteGrid.Columns["Ancho"].HeaderText = "Ancho";
92  this.grManteGrid.Columns["Ancho"].Width = 100;
93 
94  // Estilo de la celda de momento lo dejamos en single
95  this.grManteGrid.CellBorderStyle = DataGridViewCellBorderStyle.Single;
96  }
97 
98  private void cmdCancelar_Click(object sender, EventArgs e)
99  {
100  // Ocultamos la pantalla
101  this.Hide();
102  }
103 
104  private void cmdAceptar_Click(object sender, EventArgs e)
105  {
106  // Actualizamos el datatable por si ha modificado alguna cosa
107  this.Cambios_Datatable();
108 
109  // Guardamos con tal hemos aceptado
110  this._Aceptar = true;
111 
112  // Ocultamos la pantalla
113  this.Hide();
114  }
115 
116  private void Cambios_Datatable()
117  {
118  // PARTE 78159
119  string lcNombre_Columna = string.Empty;
120 
121  // Filtramos la columna de unidades que siempre debe de ser visible
122  foreach (DataRow ldrActual in _dtColumnas.Rows)
123  {
124  // Buscamoe sl nombre de la columna
125  lcNombre_Columna = Convert.ToString(ldrActual["Nombre_Columna"]);
126 
127  DataRow[] ldrOrden = PROFILES.dtColumnas.Select("Nombre_Columna = '" + lcNombre_Columna + "'", "");
128 
129  if (ldrOrden.Count() > 0 && Convert.ToBoolean(ldrOrden[0]["Seleccion"]) != Convert.ToBoolean(ldrActual["Seleccion"]))
130  {
131  ldrOrden[0]["Seleccion"] = ldrActual["Seleccion"];
132  }
133 
134  // Actualizamos el ancho
135  if (ldrOrden.Count() > 0 && Convert.ToInt32(ldrOrden[0]["Ancho"]) != Convert.ToInt32(ldrActual["Ancho"]))
136  {
137  ldrOrden[0]["Ancho"] = ldrActual["Ancho"];
138  }
139  ldrOrden = null;
140  }
141 
142  // Guardamos los cambios
143  PROFILES.dtColumnas.AcceptChanges();
144  // FPARTE 78159
145  }
146 
152  private void grManteGrid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
153  {
154  // No podemos desmarcar las columnas de artículo y de definición
155  if (e.ColumnIndex == 0 && (e.RowIndex == 0 || e.RowIndex == 1))
156  {
157  this.grManteGrid.Rows[e.RowIndex].Cells["Seleccion"].Value = true;
158  this.grManteGrid.Refresh();
159  }
160  }
161 
162  private void grManteGrid_CellClick(object sender, DataGridViewCellEventArgs e)
163  {
164  if (e.ColumnIndex == 0 && e.RowIndex == 0)
165  {
166  functions.FUNCTIONS._MessageBox("La columna de artículo es obligatoria.", "Gestión de perfiles", MessageBoxButtons.OK, MessageBoxIcon.Information, this);
167  grManteGrid.CurrentCell = grManteGrid.CurrentRow.Cells[1];
168  }
169 
170  if (e.ColumnIndex == 0 && e.RowIndex == 1)
171  {
172  functions.FUNCTIONS._MessageBox("La columna de definición es obligatoria.", "Gestión de perfiles", MessageBoxButtons.OK, MessageBoxIcon.Information, this);
173  grManteGrid.CurrentCell = grManteGrid.CurrentRow.Cells[1];
174  }
175  }
176  }
177  # endregion 3. Métodos privados
178 }
frmPerfilGrid: Configurar columnas visibles del documento