Habilitar/deshabilitar la casilla de verificación Selectall en Infragistics Ultrawingrid
-
25-10-2019 - |
Pregunta
He utilizado Infragistics Ultrawingrid para mostrar datos en la cuadrícula. En esta cuadrícula, hay una columna de casilla de verificación. He agregado casilla de verificación en el encabezado en esta columna para seleccionar la opción. Ahora quiero habilitar/deshabilitar esta casilla de verificación de encabezado en cualquier evento de clic del botón para restringir el usuario para realizar cualquier acción. ¿Puede alguien decirme cómo hacer esto? Gracias por adelantado.
Solución
Puedo pensar en dos opciones fuera de la parte superior:
1) Si no desea que el usuario haga clic en cualquiera de las casillas de verificación, simplemente oculte la columna completa si no está autorizada.
2) Si solo desea que el usuario seleccione todos los elementos en la cuadrícula, agregue el código al método Selectall para ignorar la solicitud si el usuario no está autorizado.
Actualizar
3) Si está utilizando una versión de la cuadrícula que la admite, puede usar:
grid.displaylayout.override.headercheckboxvisibility = headercheckboxvisibility.never
Cuando el formulario que contiene la cuadrícula se carga si el usuario no está autorizado.
Otros consejos
La casilla de verificación en el encabezado es proporcionada por un HeaderCheckBoxuielement y esto tiene una propiedad habilitada que se puede configurar para determinar si la casilla de verificación está habilitada. Para obtener una referencia al HeaderCheckboxuielement, puede usar el MouseEnterElement y establecer la propiedad habilitada en ese evento. Para el seguimiento si está habilitado, puede usar la propiedad de etiqueta de la columna.
El código en VB:
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim col As UltraGridColumn = Me.UltraGrid1.DisplayLayout.Bands(0).Columns("OnSite")
col.Tag = (TypeOf col.Tag Is Boolean AndAlso CBool(col.Tag) = False)
End Sub
Private Sub UltraGrid1_MouseEnterElement(sender As Object, e As Infragistics.Win.UIElementEventArgs) Handles UltraGrid1.MouseEnterElement
If TypeOf e.Element Is HeaderCheckBoxUIElement Then
Dim element As HeaderCheckBoxUIElement = DirectCast(e.Element, HeaderCheckBoxUIElement)
element.Enabled = (TypeOf element.Column.Tag Is Boolean AndAlso CBool(element.Column.Tag) = True)
End If
End Sub
El código en C#:
void ultraGrid1_MouseEnterElement(object sender, UIElementEventArgs e)
{
if (e.Element is HeaderCheckBoxUIElement)
{
HeaderCheckBoxUIElement element = (HeaderCheckBoxUIElement)e.Element;
element.Enabled = (element.Column.Tag is bool && (bool)element.Column.Tag == true);
}
}
private void button1_Click(object sender, EventArgs e)
{
UltraGridColumn col = this.ultraGrid1.DisplayLayout.Bands[0].Columns["OnSite"];
col.Tag = (col.Tag is bool && (bool)col.Tag == false);
}