안녕하세요 Datagrid에 내가 원하는 데이터를 동적으로 뿌리는것 까지는 했는데요,
해당 데이터가 많아지면 스크롤 무한정하는것도 그렇고해서 페이징 처리를 하려는데
뭔가 찾아봐도 이거다 싶은 내용이 없어서 질문올려봅니다.
datagrid에 뿌릴 데이터는 다음과 같이 선언했습니다.
ObservableCollection<ReportDataSource> datas = new ObservableCollection<ReportDataSource>();
ReportDataSource 클래스는 아래와 같습니다.
public class ReportDataSource
{
public string SubId { get; set; }
public string CTag { get; set; }
public string AddTag { get; set; }
public int ClickCount { get; set; }
public int BuyCount { get; set; }
public int TotalAmount { get; set; }
public int Profit { get; set; }
public double ClickPerProfit { get; set; }
public double ConversionRate { get; set; }
}
DataGrid는 이렇게 만들어 놨습니다.
<DataGrid Grid.Row="3" Margin="-10,10,10,0" Style="{DynamicResource DataGridStyle1}" CellStyle="{DynamicResource DataGridCellStyle1}" ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}" RowStyle="{DynamicResource DataGridRowStyle1}" x:Name="reportDataGrid">
<DataGrid.Columns>
<DataGridCheckBoxColumn CanUserResize="False" Width="auto" ElementStyle="{StaticResource CheckBoxStyle1}" >
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<CheckBox/>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="채널ID" IsReadOnly="True" Width="*" Binding="{Binding SubId}"/>
<DataGridTextColumn Header="페이지 키" IsReadOnly="False" Width="*" Binding="{Binding CTag}"/>
<DataGridTextColumn Header="페이지 타입" IsReadOnly="True" Width="*" Binding="{Binding AddTag}"/>
<DataGridTextColumn Header="클릭수" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding ClickCount}"/>
<DataGridTextColumn Header="구매건수" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding BuyCount}"/>
<DataGridTextColumn Header="총 구매금액" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding TotalAmount}"/>
<DataGridTextColumn Header="수익" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding Profit}"/>
<DataGridTextColumn Header="클릭당 수익" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding ClickPerProfit, StringFormat={}{0:0.##}}"/>
<DataGridTextColumn Header="전환율" IsReadOnly="True" Width="*" TextBlock.TextAlignment="Center" Binding="{Binding ConversionRate, StringFormat={}{0:0.##}%}"/>
</DataGrid.Columns>
</DataGrid>
Paiging 껍데기도 만들어는 놨습니다…
<Border Grid.Row="4" HorizontalAlignment="Right" BorderBrush="#dee4ec" BorderThickness="1"
CornerRadius="5" Padding="5" Background="White" Margin="0 10 10 10">
<StackPanel Orientation="Horizontal">
<Button Style="{StaticResource pagingButton}">
<Icon:PackIconMaterial Kind="ChevronLeft" Style="{StaticResource pagingButtonIcon}"/>
</Button>
<Rectangle Width="1" Fill="#dee4ec" Margin="3 7" />
<Button Style="{StaticResource pagingButton}" Content="1"/>
<Button Style="{StaticResource pagingButton}" Content="2" Background="#7950f2" Foreground="#ffffff"/>
<Button Style="{StaticResource pagingButton}" Content="3"/>
<TextBlock Text="..." Foreground="#6c7682" VerticalAlignment="Center" FontSize="15" Margin="10 0"/>
<Button Style="{StaticResource pagingButton}" Content="7"/>
<Button Style="{StaticResource pagingButton}" Content="8"/>
<Button Style="{StaticResource pagingButton}" Content="9"/>
<Rectangle Width="1" Fill="#dee4ec" Margin="3 7" />
<Button Style="{StaticResource pagingButton}">
<Icon:PackIconMaterial Kind="ChevronRight" Style="{StaticResource pagingButtonIcon}"/>
</Button>
</StackPanel>
</Border>
저 페이징버튼 만들어놓은 곳에 페이징기능을 구현하고싶고, 해당 데이터그리드가 기본적으로 헤더클릭으로 정렬이 되는데 그 기능도 유지하고싶습니다. 어떻게 만드는게 좋을 지 조언좀 구해봅니다…
참고로 아래 영상을 보고 껍데기를 구현했습니다.