【问题标题】:Enable/Disable selectAll check box in Infragistics UltraWinGridInfragistics UltraWinGrid 中的启用/禁用全选复选框
【发布时间】:2011-11-29 07:29:13
【问题描述】:

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

【问题讨论】:

    标签: vb.net checkbox infragistics ultrawingrid selectall


    【解决方案1】:

    我可以想到两个选项:

    1) 如果您不希望用户点击任何复选框,如果他们没有被授权,只需隐藏整个列。

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

    更新

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

    grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never

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

    【讨论】:

    • 我认为第二种选择更好,如果不允许用户进行操作,则编写代码以忽略请求。但是是否可以禁用标题复选框?
    • 修改答案以显示如何在运行时根据用户隐藏复选框。
    【解决方案2】:

    标题中的复选框由 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多