启用/禁用Infragistics UltraWinGrid中的selectAll复选框

时间:2011-11-29 07:29:14

标签: vb.net checkbox infragistics ultrawingrid selectall

我使用Infragistics UltraWinGrid在Grid上显示数据。在此网格中,有一个复选框列。我在此列的标题中添加了复选框以选择所有选项。 现在,我想在任何按钮单击事件上启用/禁用此标头复选框,以限制用户执行任何操作。 谁能告诉我怎么做? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我可以想到顶部的两个选项:

1)如果您不希望用户点击任何复选框,只要未经授权就隐藏整个列。

2)如果您只想让用户不要选择网格中的所有项目,请在selectAll方法中添加代码,以便在用户未获得授权时忽略该请求。

<强>更新

3)如果您使用的是支持它的网格版本,则可以使用:

grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never

如果用户未获得授权,则加载包含网格的表单。

答案 1 :(得分:0)

标题中的复选框由HeaderCheckBoxUIElement提供,并且具有enabled属性,可以设置该属性以确定是否启用了复选框。要获取对HeaderCheckBoxUIElement的引用,可以使用MouseEnterElement并在该事件中设置Enabled属性。要跟踪是否已启用,您可以使用列的Tag属性。

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);
}