2011-11-29 1 views
0

Grid에서 데이터를 표시하기 위해 Infragistics UltraWinGrid를 사용했습니다. 이 표에는 하나의 확인란 열이 있습니다. selectAll 옵션에이 열의 머리글에 확인란을 추가했습니다. 이제 버튼 클릭 이벤트에서이 헤더 확인란을 활성화/비활성화하여 사용자가 모든 작업을 수행하도록 제한하려고합니다. 아무에게도이 작업을 수행 할 수 있습니까? 미리 감사드립니다. Infragistics UltraWinGrid의 selectAll 확인란을 활성화/비활성화합니다.

답변

0

나는 정상 떨어져 두 가지 옵션을 생각할 수 있습니다 :

1) 사용자들은 권한이 부여되지 않은 경우 단지 전체 열을 숨기려면 체크 박스 중 하나를 클릭하지 않으려면.

2) 사용자가 그리드의 모든 항목을 선택하지 않도록하려면 selectAll 메서드에 코드를 추가하여 사용자가 권한이없는 경우 요청을 무시하십시오.

업데이트

3)가 지원하는 그리드의 버전을 사용하는 경우 사용할 수 있습니다

grid.DisplayLayout.Override.HeaderCheckBoxVisibility = HeaderCheckBoxVisibility.Never

사용자가 권한이없는 경우 그리드가 포함 된 양식이로드됩니다.

+0

나는 두 번째 옵션은 더 나은 사용자가 작업을 수행 할 수없는 경우 요청을 무시하는 코드를 작성하는 것 같아요. 그러나 머리글 확인란을 비활성화 할 수 있습니까? –

+0

사용자에 따라 런타임에 확인란을 숨기는 방법을 보여주는 수정 된 답변입니다. –

0

헤더의 확인란은 HeaderCheckBoxUIElement에서 제공하며이 확인란을 활성화하여 확인란이 선택되어 있는지 확인할 수 있습니다. HeaderCheckBoxUIElement에 대한 참조를 얻으려면 MouseEnterElement를 사용하고 해당 이벤트에서 Enabled 속성을 설정할 수 있습니다. 활성화 된 경우 추적을 위해 열의 Tag 속성을 사용할 수 있습니다. VB에서

코드 : C#에서

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 

코드 :

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