2011-11-29 123 views
0

我已经使用Infragistics UltraWinGrid在Grid上显示数据。在这个网格中,有一个复选框列。我在此列的标题中添加了复选框以选择所有选项。 现在我想在任何按钮单击事件上启用/禁用此标题复选框来限制用户执行任何操作。 任何人可以告诉我如何做到这一点? 在此先感谢。Infragistics中的Enable/Disable selectAll复选框UltraWinGrid

回答

0

我能想到的两个选项关闭顶部:

1)如果你不希望用户单击任何复选框,只是隐藏整列,如果他们没有被授权。 2)如果您只想让用户不选择网格中的所有项目,请将代码添加到selectAll方法以在用户未被授权时忽略该请求。

更新

3)如果你正在使用的版本支持它的网格,你可以使用:

grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never

时如果用户未被授权,包含网格的表单将被加载。

+0

我觉得第二个选择是好,编写代码来忽略该请求,如果用户没有让做手术。但可以禁用标题复选框吗? –

+0

修改后的答案显示如何在运行时隐藏复选框,具体取决于用户。 –

0

标题中的复选框由HeaderCheckBoxUIElement提供,并且它有一个启用属性,可以设置该属性以确定是否启用复选框。要获得对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); 
} 
相关问题