This question is locked. New answers and comments are not allowed.
Hello,
I am looking at your demo for "CustomFilterControls". But I do not want to filter I want to update my column with new value. I add an attach picture file to this post for demo.
At this picture we see that the user want to update the all "f" column to new value 23.
I write this code :
XAML:
<
Border
x:Name
=
"LayoutRoot"
Background
=
"#FFDFE2E5"
BorderBrush
=
"#FF8A929E"
BorderThickness
=
"1"
Padding
=
"5"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
TextBlock
Margin
=
"2"
>New Value:</
TextBlock
>
<
TextBox
Name
=
"newValue"
Grid.Row
=
"1"
Margin
=
"2"
/>
<
telerik:RadButton
Name
=
"updateButton"
Grid.Row
=
"2"
Width
=
"80"
Margin
=
"2"
Click
=
"OnUpdate"
Content
=
"Update"
/>
</
Grid
>
</
Border
>
Code :
public
partial
class
UpdateColumnControl : UserControl, IFilteringControl
{
private
GridViewBoundColumnBase column;
private
CompositeFilterDescriptor compositeFilter;
private
FilterDescriptor newValueFilter;
/// <summary>
/// Gets or sets a value indicating whether the filtering is active.
/// </summary>
public
bool
IsActive
{
get
{
return
(
bool
)GetValue(IsActiveProperty); }
set
{ SetValue(IsActiveProperty, value); }
}
/// <summary>
/// Identifies the <see cref="IsActive"/> dependency property.
/// </summary>
public
static
readonly
DependencyProperty IsActiveProperty =
DependencyProperty.Register(
"IsActive"
,
typeof
(
bool
),
typeof
(UpdateColumnControl),
new
System.Windows.PropertyMetadata(
false
));
[TypeConverter(
typeof
(
string
))]
public
string
NewValue
{
get
{
return
this
.newValue.Text; }
set
{
this
.newValue.Text = value; }
}
public
TextBox NewValuePicker
{
get
{
return
this
.newValue; }
}
public
UpdateColumnControl()
{
InitializeComponent();
}
public
void
Prepare(GridViewBoundColumnBase column)
{
this
.column = column
as
GridViewBoundColumnBase;
if
(
this
.column ==
null
)
{
return
;
}
if
(
this
.compositeFilter ==
null
)
{
this
.CreateFilters();
}
this
.newValueFilter.Value =
this
.NewValue;
}
private
void
CreateFilters()
{
string
dataMember =
this
.column.DataMemberBinding.Path.Path;
this
.compositeFilter =
new
CompositeFilterDescriptor();
this
.newValueFilter =
new
Telerik.Windows.Data.FilterDescriptor(dataMember
, Telerik.Windows.Data.FilterOperator.IsGreaterThanOrEqualTo
,
null
);
this
.compositeFilter.FilterDescriptors.Add(
this
.newValueFilter);
}
private
void
OnUpdate(
object
sender, RoutedEventArgs e)
{
this
.newValueFilter.Value =
this
.NewValue;
if
(!
this
.column.DataControl.FilterDescriptors.Contains(
this
.compositeFilter))
{
this
.column.DataControl.FilterDescriptors.Add(
this
.compositeFilter);
}
this
.IsActive =
true
;
}
}
My Question is how can I update my ViewModel with the new value (I am working with MVVM) from the Custom Filter Control ?
private void clubsGrid_Filtered(object sender, GridViewFilteredEventArgs e)
OR
private void clubsGrid_Filtering(object sender, GridViewFilteringEventArgs e)
Because these events not firing and I read here why it's not working.
Also The column instance inside the filtering control :
public
void
Prepare(GridViewBoundColumnBase column)
{
this
.column = column
as
GridViewBoundColumnBase;
}
Has NO property "DataControl" which will return the grid instance.
I do it like this :
RadGridView gv = (RadGridView)((GridViewColumn)(column)).DataControl;
But inside RadGridView (gv) there is no ItemsSource property that I can cast its ItemsSource property to my needed collection
Thanks,
Aviv