【发布时间】:2018-07-05 14:45:29
【问题描述】:
如何使用 VB.NET WPF 从 DataSet 中按日期对 DataGrid 进行排序? Datagrid 表应按最新日期自动排列行(标题 =“犯罪日期”)。 我试过使用 SortDirection= “ascending” 和 SortDirection= “descending” 但两者都行不通。有什么想法吗?
谢谢。
这是我的 UI 数据网格。 Click Here
(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()
【问题讨论】:
标签: wpf vb.net sorting datagrid