Ejemplo de uso del control, la mayoria de las operaciones se hacen a partir de la vista asociada al control
Listado de ejemplos
- Control a utilizar
- Aplicar Filtrado de valores en primera fila
- Cómo Recorrer un Grid
- Carga de datos al Grid
- Eliminación de filas en un grid
- Ejemplo de evaluar celda en Grid
- Deshabilitar edición de fila
- Detección de cambios en valores de celdas
- Cambio de color de fondo de filas
- Opciones mas utilizadas
- Expandir Grupos programaticamente
- Definir columna para agrupaciones programaticamente
- Aplicar agrupaciones y sumatorias en columnas visualmente
- Aplicar funciones agregadas programaticamente
- Ejemplo de CheckEdit En Grid
- Ejemplo de ajuste de columnas en Grid
- Ejemplo Post Editor
Ejemplo para deshabilitar la edicción de una fila a partir de un valor especificado - Evento ShowingEditor del gridview ↑
// Deshabilitar la edición
// How to Conditionally Prevent Editing for Individual Grid Cells
// https://www.devexpress.com/Support/Center/Question/Details/A249/how-to-conditionally-prevent-editing-for-individual-grid-cells
private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
{
GridView view = sender as GridView;
if(view.FocusedColumn.FieldName == "Region" && !USCanada(view, view.FocusedRowHandle))
{
e.Cancel = true;
}
}
Ejemplo para detectar cambios en el valor de una celda - Evento EditValueChanging ↑
/// <summary>
/// Procedimiento que se activa cuando ha cambiado el valor de un repository item
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RepositoryItemEventoEditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
if (e.OldValue.ToString() != e.NewValue.ToString())
{
labelMensaje.Text = "Valor Anterior " + e.OldValue.ToString() + System.Environment.NewLine +
"Nuevo Valor" + e.NewValue.ToString();
}
}
Ejemplo para cambiar el color de fondo de una fila ↑
/// <summary>
/// Procedimiento que cambia el color de fondo de una fila del XtraGridControl
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RepositoryItemEventoEditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
if (e.OldValue.ToString() != e.NewValue.ToString())
{
labelMensaje.Text = "Valor Anterior " + e.OldValue.ToString() + System.Environment.NewLine +
"Nuevo Valor" + e.NewValue.ToString();
BaseEdit boton = (BaseEdit)sender;
GridControl grid = (GridControl)boton.Parent;
GridView view = (GridView)grid.FocusedView;
filasQueHanCambiado.Add(view.FocusedRowHandle);
view.RefreshRow(view.FocusedRowHandle);
//view.Appearance.SelectedRow.BackColor = System.Drawing.Color.Red;
//view.Appearance.SelectedRow.Options.UseBackColor = true;
//view.OptionsSelection.EnableAppearanceFocusedRow = true;
//view.OptionsSelection.EnableAppearanceFocusedCell = true;
//view.Appearance.FocusedRow.Options.UseBackColor = true;
//view.Appearance.FocusedRow.BackColor = System.Drawing.Color.Red;
//view.OptionsSelection.EnableAppearanceHideSelection = true;
//view.Appearance.HideSelectionRow.Options.UseBackColor = true;
//view.Appearance.HideSelectionRow.BackColor = System.Drawing.Color.Red;
}
}
List<int> filasQueHanCambiado = new List<int>();
/// <summary>
/// Evento que cambia el color de todas las filas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GridViewEventoRowStyle(object sender, RowStyleEventArgs e)
{
//https://www.devexpress.com/Support/Center/Question/Details/Q288829
//https://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridView_RowStyletopic
// https://documentation.devexpress.com/#WindowsForms/CustomDocument758
GridView view = (GridView)sender;
if (e.RowHandle >= 0)
{
//string category = view.GetRowCellDisplayText(e.RowHandle, view.Columns["CodigoEspecialMostrar"]);
if (filasQueHanCambiado.Contains(e.RowHandle))
{
e.Appearance.BackColor = Color.Red;
//e.Appearance.BackColor2 = Color.SeaShell;
}
}
}
}
Ejemplo de Opciones mas utilizadas en el GridView ↑
GridView view = (GridView)sender;
// Obtiene el valor a partir de la columna o FieldName que tiene el foco
view.GetFocusedRowCellValue(nombreColumna).ToString().Trim()
view.GetFocusedRowCellValue(nombreFieldName).ToString().Trim()
// Obtiene el valor a partir de la columna o FieldName que tiene el foco
view.GetFocusedRowCellDisplayText(nombreColumna).ToString().Trim()
view.GetFocusedRowCellDisplayText(nombreFieldName).ToString().Trim()
// Obtener el texto que se muestra en la celda que tiene el foco
view.GetFocusedDisplayText().ToString().Trim()
// Obtener el valor que se muestra en la celda que tiene el foco
view.GetFocusedValue().ToString().Trim()
// Obtener el campo FieldName de la celda que tiene el foco
view.FocusedColumn.FieldName
// Obtener el valor de una fila en específico por nombre de columna o FieldName
view.GetRowCellDisplayText(rowHandDeLaFila,nombreColumaOfieldName).ToString().Trim()
view.GetRowCellValue(rowHandDeLaFila,nombreColumaOfieldName).ToString().Trim()
//Obtener todos los valores de la fila si estan ligados a un DataSource
TipoDeDato variable = (TipoDeDato)view.GetFocusedRow();
// Obtener el valor por el nombre de la columna que tiene el foco
view.GetRowCellValue(view.FocusedRowHandle, nombreColumaOfieldName).ToString().Trim()
view.GetRowCellDisplayText(view.FocusedRowHandle,nombreColumaOfieldName).ToString().Trim()
// Opción para agrupar el GridView a partir de una columna
colNombreColumna.GroupIndex = 1;
// Opción para ocultar el groupPanel y expander todos los grupos
view.OptionsView.ShowGroupPanel = false;
view.ExpandAllGroups();
// Setear Datos de una columna o FieldName específico
view.SetRowCellValue(i, NombreColumna,true);
view.SetRowCellValue(i, NombreFieldName,true);
// Obtiene todos los filas visibles
view.RowCount;
// Obtiene todas las filas del gridview
view.DataRowCount;
// Redimensionar columnas
view.BestFitColumns();;
// Redimensionar columnas y habilitación de barra horizontal
https://www.devexpress.com/Support/Center/Question/Details/T149277/how-to-best-fit-columns
// La opción OptionsView.ColumnAutoWidth = false hace que aparezca el scroll vertical, si eso no esta activado, cuando hay muchas columnas
// el método best fit no funciona y las columnas no se ven bien
view.OptionsView.ColumnAutoWidth = false;
view.BestFitColumns();
Excelente aportación.