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.

¿Fue útil?

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top