or
var filter = new FilterDescriptor(dataMember, FilterOperator.IsEqualTo, checkBoxCustomFilterType.Text);
namespace
Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.DOM
{
[TypeConverter(
typeof
(TestTypeConverter))]
public
class
PTestType : IEquatable<PTestType>
{
public
long
Id {
get
;
set
; }
public
string
ShortTestName {
get
;
set
; }
public
string
TestName {
get
;
set
; }
public
bool
Equals(PTestType other)
{
return
Id == other.Id;
}
public
override
string
ToString()
{
return
ShortTestName;
}
public
override
int
GetHashCode()
{
return
(
int
)Id;
}
public
override
bool
Equals(
object
obj)
{
var type = obj
as
PTestType;
if
(type !=
null
)
{
return
Id == type.Id;
}
return
false
;
}
bool
IEquatable<PTestType>.Equals(PTestType other)
{
if
(other ==
null
)
{
return
false
;
}
return
StringComparer.Ordinal.Equals(Id, other.Id);
}
}
}
namespace
Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.Tabs.TestBucketTab
{
public
class
PTestTypeConverter : IValueConverter
{
public
object
Convert(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
var TestType = (PTestType)value;
return
TestType.ShortTestName;
}
public
object
ConvertBack(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
throw
new
NotImplementedException();
}
}
public
class
TestTypeConverter : TypeConverter
{
public
TestTypeConverter()
{
}
public
override
bool
CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return
sourceType ==
typeof
(
string
);
}
public
override
object
ConvertFrom(ITypeDescriptorContext context, CultureInfo culture,
object
value)
{
var stringValue = value
as
string
;
if
(stringValue !=
null
)
{
return
new
PTestType {Id = 1, TestName =
"sdfsdf"
,ShortTestName =
"shortsd"
};
}
return
base
.ConvertFrom(context, culture, value);
}
public
override
bool
CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if
(destinationType ==
typeof
(
string
))
{
return
true
;
}
return
base
.CanConvertTo(context, destinationType);
}
public
override
object
ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
object
value, Type destinationType)
{
if
(destinationType ==
typeof
(
string
))
{
return
((PTestType)value).ShortTestName;
}
return
base
.ConvertTo(context, culture, value, destinationType);
}
}
}
namespace
Systematic.KVK.InseminationPlan.UIL.Details.Windows.TestBucket.CustomFilters
{
public
partial
class
TestTypeCheckBoxFilterControl : IFilteringControl
{
public
ObservableCollection<CheckBoxCustomFilterType> CustomItems {
get
;
set
; }
private
GridViewBoundColumnBase column;
private
CompositeFilterDescriptor compositeFilter;
public
TestTypeCheckBoxFilterControl()
{
InitializeComponent();
CustomItems =
new
ObservableCollection<CheckBoxCustomFilterType>();
DataContext =
this
;
}
private
void
OnFilter(
object
sender, RoutedEventArgs e)
{
column.DataControl.FilterDescriptors.Clear();
compositeFilter =
new
CompositeFilterDescriptor {LogicalOperator = FilterCompositionLogicalOperator.Or};
var dataMember = column.DataMemberBinding.Path.Path;
foreach
(var checkBoxCustomFilterType
in
CustomItems)
{
if
(checkBoxCustomFilterType.Checked)
{
var filter =
new
FilterDescriptor(dataMember, FilterOperator.IsEqualTo, checkBoxCustomFilterType.Text);
compositeFilter.FilterDescriptors.Add(filter);
}
}
if
(!column.DataControl.FilterDescriptors.Contains(compositeFilter))
{
column.DataControl.FilterDescriptors.Add(compositeFilter);
}
IsActive =
true
;
}
private
void
OnClear(
object
sender, RoutedEventArgs e)
{
column.DataControl.FilterDescriptors.Clear();
compositeFilter.FilterDescriptors.Clear();
CustomItems.ForEach(x => x.Checked =
false
);
}
public
void
Prepare(Telerik.Windows.Controls.GridViewColumn column)
{
CustomItems.Clear();
this
.column = column
as
GridViewBoundColumnBase;
var distinctValues = ((RadGridView)column.Parent).GetDistinctValues(column,
false
);
foreach
(PTestType distinctValue
in
distinctValues)
{
CustomItems.Add(
new
CheckBoxCustomFilterType {Checked =
false
, Text = distinctValue.ToString()});
}
}
public
bool
IsActive {
get
;
set
; }
private
void
SelectAll(
object
sender, RoutedEventArgs e)
{
var checkbox = (sender
as
CheckBox);
if
(checkbox ==
null
|| checkbox.IsChecked ==
null
)
{
return
;
}
foreach
(var checkBoxCustomFilterType
in
CustomItems)
{
checkBoxCustomFilterType.Checked = checkbox.IsChecked.Value;
}
}
}
}
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Path=PTestType}"
IsReadOnly
=
"True"
IsFilterable
=
"True"
Header
=
"{x:Static localization:TestBucketTexts.TestType}"
>
<
telerik:GridViewDataColumn.FilteringControl
>
<
customFilters:TestTypeCheckBoxFilterControl
/>
</
telerik:GridViewDataColumn.FilteringControl
>
<
telerik:GridViewDataColumn.CellTemplate
>
<
DataTemplate
DataType
=
"dom:PBucketModel"
>
<
TextBlock
Text
=
"{Binding Path=PTestType}"
/>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellTemplate
>
</
telerik:GridViewDataColumn
>