如何使用 WPF 从数据集中按日期对数据网格进行排序 VB.NET?



如何使用 VB.NET WPF 从数据集中按日期对数据网格进行排序? 数据网格表应按最新日期自动排列行(header="犯罪日期"(。 我尝试使用排序方向="升序"和排序方向="降序" 但两者都行不通。伙计们有什么想法吗?

谢谢。

这是我的UI数据网格。 点击这里

(XAML( 代码

<DataGrid x:Name="listCompound" SelectionChanged="listCompound_SelectionChanged"   VerticalGridLinesBrush="Black" Grid.Row ="0" Margin="10,0,0,0" VerticalAlignment="Top" CellStyle="{StaticResource DataGridContentCenter}"  AutoGenerateColumns="False" CanUserAddRows="False"    
CanUserSortColumns="True"  IsReadOnly="true" ColumnHeaderStyle="{StaticResource DataGridHeaderFloatingWindow}" HorizontalAlignment="Center" Grid.RowSpan="2">
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}},Path=Header}" />
</DataTemplate>
</DataGrid.RowHeaderTemplate>
<DataGrid.Columns>
<DataGridTextColumn Header="Compound No." Binding="{Binding Path=NO}"  Width="135">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="TextBlock.VerticalAlignment"  Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Plate Number" Binding="{Binding Path=VEHICLE}" Width="120" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="TextBlock.VerticalAlignment"  Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Offence Date" Binding="{Binding Path=DATE, StringFormat=dd/MM/yyyy}" Width="90" SortDirection="Descending">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextBlock.VerticalAlignment"  Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>                                        
<DataGridTextColumn Header="Amount" Binding="{Binding Path=PAY}" Width="80" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextBlock.VerticalAlignment"  Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Width="100">
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Button x:Name="BtnBayar" Click="BtnBayar_Click" Content="Bayar"  FontWeight="Medium"  BorderBrush="Black"  CommandParameter="{Binding Path=REFNO}" Background="{x:Null}" Width="70" Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="1" Foreground="Black" Margin="1">
<Button.Style >
<Style TargetType="Button" >
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="false">
<Setter Property= "Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

VB.NET

Dim i As Integer = 0
While i < CompoundLists.Count
dsRow = ds.Tables("tblCompound").NewRow
dsRow("NO") = CompoundLists(i).REFNO
dsRow("VEHICLE") = CompoundLists(i).VEHICLENO
dsRow("DATE") = CDate(CompoundLists(i).TRANSDATE)
dsRow("PAY") = CompoundLists(i).AMNTOPAY
ds.Tables("tblCompound").Rows.Add(dsRow)
i += 1
End While
TransLog("Storing compound Info in Dataset")
'txtAccNo.Text = strBillAcc

dtSource = ds.Tables("tblCompound")
FillGrid()

我是这样做的:

Dim NewView As DataView = ds.DefaultView 'ds is your DataTable right?
NewView.Sort = "DATE DESC"
ds = NewView.ToTable

有了这个,您可以创建数据视图,将数据表复制到其中,按列"DATE"降序排序,然后将数据视图复制到数据表(覆盖(

最新更新