2011-11-29 55 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); 
} 
相關問題