I need an example of how to allow users to view a report with a default date range and allow them to change the start and end dates outside the ReportViewer with SilverLight 4/ Reporting 2010 Q2 SP1/ RIA Domain Data Sources.
Right now I just need this to work , but project team that I'm on uses MVVM but from what I understand from other posts binding is not posible (please correct me if this is wrong).
Right now I just need this to work , but project team that I'm on uses MVVM but from what I understand from other posts binding is not posible (please correct me if this is wrong).
2 Answers, 1 is accepted
0
Ryan
Top achievements
Rank 2
answered on 09 Nov 2010, 08:18 PM
public
MainPage()
{
InitializeComponent();
this
.ReportViewer1.RenderBegin +=
new
RenderBeginEventHandler(ReportViewer1_RenderBegin);
}
void
ReportViewer1_RenderBegin(
object
sender, RenderBeginEventArgs args)
{
//single value parameter
args.ParameterValues[
"ProductCategory"
] =
"Components"
;
//multi value parameter
args.ParameterValues[
"ProductSubcategory"
] =
new
object
[] {
"Brakes"
,
"Chains"
};
}
Found the solution using Google instead of the Forum search.
http://www.telerik.com/support/kb/reporting/report-viewers/programmatic-initialization-of-report-parameter-values-in-telerik-reporting-silverlight-viewer.aspx
0

Alexander
Top achievements
Rank 1
answered on 21 Sep 2011, 11:03 AM
Hi!
I use the same approach in an bahavior - so i can bind my parameter values to my viewmodel.
with my beahvior, my XAML looks like that:
this is my behavior:
I use the same approach in an bahavior - so i can bind my parameter values to my viewmodel.
with my beahvior, my XAML looks like that:
<
Silverlight:ReportViewer
x:Name
=
"ReportViewer1"
ReportServiceUri
=
"myServiceAddress"
Report
=
"myReportClass, myReportAssembly"
>
<
i:Interaction.Behaviors
>
<
coreBehavior:BindReportParametersBehavior
>
<
coreBehavior:BindReportParametersBehavior.ReportParameterBindingCollection
>
<
coreBehavior:ReportParameterBinding
Parametername
=
"parameter1"
Value
=
"{Binding myViewModel.Value4Parameter1}"
/>
<
coreBehavior:ReportParameterBinding
Parametername
=
"parameter2"
Value
=
"{Binding myViewModel.Value4Parameter2"
/>
</
coreBehavior:BindReportParametersBehavior.ReportParameterBindingCollection
>
</
coreBehavior:BindReportParametersBehavior
>
</
i:Interaction.Behaviors
>
</
Silverlight:ReportViewer
>
this is my behavior:
using
System.Collections.ObjectModel;
using
System.Windows;
using
System.Windows.Interactivity;
using
Telerik.ReportViewer.Silverlight;
namespace
rsorb.client.core.Behavior
{
/// <summary>
/// Behavior to Bind the Values TelerikReportParameters to the ViewModel
/// </summary>
public
class
BindReportParametersBehavior : Behavior<ReportViewer>
{
#region Dependency Properties
/// <summary>
/// Collection for the Bindings
/// </summary>
public
ReportParameterBindingCollection ReportParameterBindingCollection
{
get
{
return
(ReportParameterBindingCollection)GetValue(ReportParameterBindingCollectionProperty); }
set
{ SetValue(ReportParameterBindingCollectionProperty, value); }
}
// Using a DependencyProperty as the backing store for ReportParameterBindingCollection. This enables animation, styling, binding, etc...
public
static
readonly
DependencyProperty ReportParameterBindingCollectionProperty =
DependencyProperty.Register(
"ReportParameterBindingCollection"
,
typeof
(ReportParameterBindingCollection),
typeof
(BindReportParametersBehavior),
new
PropertyMetadata(
new
ReportParameterBindingCollection()));
#endregion
#region Attached/Detached
/// <summary>
/// Attach
/// </summary>
protected
override
void
OnAttached()
{
base
.OnAttached();
this
.AssociatedObject.RenderBegin +=
new
RenderBeginEventHandler(AssociatedObject_RenderBegin);
}
/// <summary>
/// Detach
/// </summary>
protected
override
void
OnDetaching()
{
this
.AssociatedObject.RenderBegin -= AssociatedObject_RenderBegin;
base
.OnDetaching();
}
#endregion
#region Private Methods
/// <summary>
/// Assign the parametervalues
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private
void
AssociatedObject_RenderBegin(
object
sender, RenderBeginEventArgs args)
{
foreach
(var reportParameterBinding
in
ReportParameterBindingCollection)
{
// Set the DataContext of the ListItem (this makes the bindings work)
if
(reportParameterBinding.DataContext ==
null
)
reportParameterBinding.DataContext =
this
.AssociatedObject.DataContext;
args.ParameterValues[reportParameterBinding.Parametername] = reportParameterBinding.Value;
}
}
#endregion
}
/// <summary>
/// Collectionclass for the bindings
/// </summary>
public
class
ReportParameterBindingCollection : ObservableCollection<ReportParameterBinding>
{
}
/// <summary>
/// Represents an item for the Binding-Collection
/// </summary>
public
class
ReportParameterBinding : FrameworkElement
{
/// <summary>
/// Name of the reportparameter
/// </summary>
public
string
Parametername
{
get
{
return
(
string
)GetValue(ParameternameProperty); }
set
{ SetValue(ParameternameProperty, value); }
}
public
static
readonly
DependencyProperty ParameternameProperty =
DependencyProperty.Register(
"Parametername"
,
typeof
(
string
),
typeof
(ReportParameterBinding),
new
PropertyMetadata(
string
.Empty));
/// <summary>
/// Value of the reportparameter
/// </summary>
public
object
Value
{
get
{
return
(
object
)GetValue(ValueProperty); }
set
{ SetValue(ValueProperty, value); }
}
// Using a DependencyProperty as the backing store for Value. This enables animation, styling, binding, etc...
public
static
readonly
DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value"
,
typeof
(
object
),
typeof
(ReportParameterBinding),
new
PropertyMetadata(
string
.Empty));
}
}