Включить / отключить флажок selectAll в Infragistics UltraWinGrid - PullRequest
0 голосов
/ 29 ноября 2011

Я использовал Infragistics UltraWinGrid для отображения данных в сетке.В этой сетке есть один столбец флажка.Я добавил флажок в заголовке в этом столбце, чтобы выбрать все опции.Теперь я хочу включить / отключить этот флажок для любого события нажатия кнопки, чтобы запретить пользователю выполнять какие-либо действия.Кто-нибудь может сказать мне, как это сделать?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2012

Флажок в заголовке предоставляется HeaderCheckBoxUIElement, и у него есть свойство enabled, которое можно установить, чтобы определить, включен ли флажок. Чтобы получить ссылку на HeaderCheckBoxUIElement, вы можете использовать MouseEnterElement и установить свойство Enabled в этом событии. Для отслеживания, если он включен, вы можете использовать свойство тега столбца.

Код в 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

Код в 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);
}
0 голосов
/ 29 ноября 2011

Я могу подумать о двух вариантах сверху:

1) Если вы не хотите, чтобы пользователь нажимал какие-либо из флажков, просто скройте весь столбец, если они не авторизованы.

2) Если вы хотите только запретить пользователю выбирать все элементы в сетке, добавьте код в метод selectAll, чтобы игнорировать запрос, если пользователь не авторизован.

Обновить

3) Если вы используете версию сетки, которая ее поддерживает, вы можете использовать:

grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never

когда загружается форма, содержащая сетку, если пользователь не авторизован.

...