Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在Infrastics UltraWinGrid中启用/禁用selectAll复选框_Vb.net_Checkbox_Infragistics_Ultrawingrid_Selectall - Fatal编程技术网

Vb.net 在Infrastics UltraWinGrid中启用/禁用selectAll复选框

Vb.net 在Infrastics UltraWinGrid中启用/禁用selectAll复选框,vb.net,checkbox,infragistics,ultrawingrid,selectall,Vb.net,Checkbox,Infragistics,Ultrawingrid,Selectall,我使用Infrastics UltraWinGrid在网格上显示数据。在此网格中,有一个复选框列。我在该列的标题中添加了复选框以选择所有选项。 现在,我想在任何按钮单击事件上启用/禁用此标题复选框,以限制用户执行任何操作。 谁能告诉我怎么做? 提前谢谢。我可以从顶部想出两个选项: 1) 如果您不希望用户单击任何复选框,只要在未经授权的情况下隐藏整个列即可 2) 如果您只想阻止用户选择网格中的所有项目,请向selectAll方法添加代码,以便在用户未经授权时忽略该请求 更新 3) 如果您使用的是支

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

我可以从顶部想出两个选项:

1) 如果您不希望用户单击任何复选框,只要在未经授权的情况下隐藏整个列即可

2) 如果您只想阻止用户选择网格中的所有项目,请向selectAll方法添加代码,以便在用户未经授权时忽略该请求

更新

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

grid.DisplayLayout.Override.HeaderCheckBox可见性=HeaderCheckBox可见性。从不


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

标题中的复选框由HeaderCheckBox元素提供,该元素具有一个enabled属性,可设置该属性以确定该复选框是否已启用。要获取对HeaderCheckBox元素的引用,可以使用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);
}