How to sort grid by a certain field using my own custom sorting condition? For example I have: 1. One DataView dv, that is binding for FieldLayout[0] of XamDataGrid grid 2. Datatable1 of this dataView contains column "Id" 3. Column "Id" is a foreign key for datatable1 and primary key of datatable2 4. With converter's help I set "Name" instead "Id" in grid <igDP:Field Name="Id" Label="Name" > <igDP:Field.Settings><igDP:FieldSettings AllowEdit="False" CellValuePresenterStyle="{StaticResource CurrentStyle}" CellMaxHeight="20"/></igDP:Field.Settings> </igDP:Field> //----------------------------------------------------------------------------------------------------- class CurrentStyleConverter : IValueConverter {#region IValueConverter Memberspublic object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {if (value != null && (value is int || value is string)) {return DataSet1.GetNameById((int)value); }if (value != null && value is DataRecord) { DataRecord dr = value as DataRecord;if (dr != null && dr.DataItem != null && dr.DataItem is DataRow) {DataSet1.DataRow1 row = dr.DataItem as DataSet1.DataRow1;return DataSet1.GetNameById(row.Id); } }return value; }public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {throw new Exception("The method or operation is not implemented."); } #endregion } //--------------------------------------------------------- <local:CurrentStyleConverter x:Key="CurrentStyleConverter"/> <Style x:Key="CurrentStyle" TargetType="{x:Type igDP:CellValuePresenter}"><Setter Property="Template"> <Setter.Value><ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Converter={StaticResource CurrentStyleConverter}}" VerticalAlignment="Center" Foreground="#FF151C55"Margin="5,0,0,0"/> </ControlTemplate></Setter.Value> </Setter> </Style> As a result: sorting "by default" by "Id" column in grid: is by "Id" field I'd like, that sorting by "Id" column would make the grid sorted by Name assigned to each Id. How can I easily do this? Thanks for help.
2. Datatable1 of this dataView contains column "Id"
<igDP:Field.Settings>
AllowEdit="False"
CellMaxHeight="20"/>
</igDP:Field>
class CurrentStyleConverter : IValueConverter
{
}
DataRecord dr = value as DataRecord;
#endregion
<Style x:Key="CurrentStyle" TargetType="{x:Type igDP:CellValuePresenter}">
<Setter.Value>
<TextBlock
Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Converter={StaticResource CurrentStyleConverter}}"
VerticalAlignment="Center"
Foreground="#FF151C55"
</ControlTemplate>
</Style>
Hi I hae written following comparer class :
Implements IComparer
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
End Function
End Class
and set SortComparer Property of XamDataGrid as follows
Dim comp as New EditDatesActivityComparer()
xamDataGrid.SortComparer=comp
but still Compare method is not getting called.but New method is getting called when object is created.
Please let me know what would be the issue or I am doing anything wrong.
Regards,
Vinod Sa.
Field fieldDATE = xamDataGrid1.FieldLayouts[0].Fields["DateActivity"]; if (fieldDATE != null) //sort fieldDATE .Settings.SortComparer = new EditDatesActivityComparer(); //fieldDATE .Settings.GroupByComparer = new EditDatesActivityComparer();
if (fieldDATE != null)
//sort
fieldDATE .Settings.SortComparer = new EditDatesActivityComparer();
//fieldDATE .Settings.GroupByComparer = new EditDatesActivityComparer();