2013-11-20 4 views
0

Infragistics의 XamDataGrid에 대한 특정 속성에 대해 Group By On Load를 설정하고이 그룹을 축소 할 수있는 권한을 가진보기를 비활성화하지 않으려면 어떻게해야합니까? 이것이 가능한 경우 그룹 별 작은 단추를 숨길 수있는 방법을 알고 있습니다.Infragistics XamDataGrid 그룹 WPF에서로드시

내 환경은 WPF 및 C#입니다.

+0

당신은 가상 데이터 그리드를 사용하고 있습니까? –

+0

@VishalParekh 예 해당 데이터 표를 사용하고 있습니다. – jonas

+0

그래서 ListCollectionView를 사용하여 GroupDescriptions를 추가하고 ListCollectionView를 항목 소스로 적용하면 GroupDescriptions에 정의 된 열 이름을 가진 그룹이 생성됩니다. –

답변

4

이 시도, XAML에서

, 코드 숨김에서

<igDP:XamDataGrid x:Name="xdgSample" DataSource="{Binding SampleCollection}" InitializeRecord="xdgSample_InitializeRecord"> 
           <igDP:XamDataGrid.FieldLayouts> 
            <igDP:FieldLayout>  
             <igDP:Field Name="field1" Label="Field1"/> 
             <igDP:Field Name="field2" Label="Field2"/> 
             <igDP:Field Name="field3" Label="Field3"/> 
             <igDP:Field Name="field4" Label="Field4"/> 
             <igDP:Field Name="field5" Label="Field5"/>         
            </igDP:FieldLayout> 
           </igDP:XamDataGrid.FieldLayouts> 
           <igDP:XamDataGrid.FieldLayoutSettings> 
            <igDP:FieldLayoutSettings AllowFieldMoving="No" 
                 AllowDelete="False" 
                 AutoGenerateFields="False" 
                 AutoFitMode="ExtendLastField" 
                 SelectionTypeRecord="Single" 
                 FilterUIType="LabelIcons" 
          GroupByExpansionIndicatorVisibility="Collapsed"> 
            </igDP:FieldLayoutSettings> 
           </igDP:XamDataGrid.FieldLayoutSettings> 
          </igDP:XamDataGrid> 

, 당신은 코드 아래에 넣을 수 있습니다

Private ObservableCollection<SampleBO> sampleCollection; 

Public ObservableCollection<SampleBO> SampleCollection 
{ 
    get 
    { 
     return this.sampleCollection; 
    } 
} 

로드하고 창로드 이벤트 또는 생성자의 데이터를 그룹화하는,

this.sampleCollection = your collection/List; 
this.OnPropertyChange("SampleCollection"); 

this.xdgSample.FieldLayouts[0].SortedFields.Add(new FieldSortDescription 
         { 
          IsGroupBy = true, 
          Field = this.xamInputList.FieldLayouts[0].Fields["field2"], 
          Direction = System.ComponentModel.ListSortDirection.Ascending 
         }); 

         this.xdgSample.FieldLayoutSettings.HeaderPlacement = HeaderPlacement.OnTopOnly; 
         this.xdgSample.FieldLayoutSettings.HeaderPlacementInGroupBy = HeaderPlacementInGroupBy.WithDataRecords; 

또한, 확장 된 그룹의 경우, 아래의 이벤트를 사용하십시오. 초기에 그룹을 확장하는 데 사용됩니다.

private void xdgSample_InitializeRecord(object sender, Infragistics.Windows.DataPresenter.Events.InitializeRecordEventArgs e)  
{  
if (e.Record.NestingDepth == 0)  
{  
    e.Record.IsExpanded = true;  
}  
} 
+0

'xdgSample_InitializeRecord()'를 트리거하는 방법을 이해하는 데 다소 시간이 걸렸지 만' jonas

+0

여기에서 질문에서 당신은 HeaderPlacement에 대해 언급하지 않았으므로, 나는 그것을 스스로 설정했습니다. 요구 사항에 따라 HeaderPlacementInGroupBy 속성을 설정할 수 있습니다. –

+0

그게 내 잘못이야, 나는 헤더의 위치를 ​​언급하지 않았다는 것을 알았다. 하지만'XamDataGrid'에'InitializeRecords'를 추가할까요? 내가 추가하지 않으면 작동하지 않을 것으로 사람들을 혼란스럽게 할 수 있다고 생각합니다. – jonas