or
Hi,
I am trying to display company revenue by product using AreaSeries and SeriesMapping. But unfortunately
I don't know how to set CombineMode in SeriesMapping way. Could you please provide an example?
private void SetMappings(RadChart chart){ SeriesMapping seriesMapping = new SeriesMapping() { ChartAreaName = "MyChartArea" }; seriesMapping.SeriesDefinition = new AreaSeriesDefinition(); //=============================================// ItemMapping itemMapping = new ItemMapping(); itemMapping.DataPointMember = DataPointMember.YValue; itemMapping.FieldName = "Rev"; ItemMapping itemMapping2 = new ItemMapping(); itemMapping2.DataPointMember = DataPointMember.XValue; itemMapping2.FieldName = "Date"; seriesMapping.ItemMappings.Add(itemMapping); seriesMapping.ItemMappings.Add(itemMapping2); chart.SeriesMappings.Add(seriesMapping);}
<telerikChart:RadChart x:Name="RadChart1" UseDefaultLayout="False">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<telerikCharting:ChartTitle Grid.ColumnSpan="2" Content="Chart Title"></telerikCharting:ChartTitle>
<telerikCharting:ChartArea Grid.Row="1" x:Name="MyChartArea" LegendName="MyLegend" Margin="-1,1,1,-1" />
<telerikCharting:ChartLegend Grid.Row="1" Grid.Column="1" x:Name="MyLegend"></telerikCharting:ChartLegend>
</Grid>
</telerikChart:RadChart>
Thanks!
private void SetupChart() { // some data to visualise... // NB: need a reasonable number of points, doesn't exhibit at low numbers var data = new DataTable(); data.Columns.Add("x", typeof(int)); data.Columns.Add("y", typeof(double)); var date = new DateTime(2012, 1, 1); var rnd = new Random(); for (var i = 0; i < 100; i++) { var row = data.NewRow(); row["x"] = date.Year * 12 + date.Month - 1; // integer value calc'd so that 1st of month is evenly spaced (see UpdateLabels() below) row["y"] = 50 + rnd.NextDouble() * 10; data.Rows.Add(row); date = date.AddMonths(1); } // just set up a basic line chart for testing purposes... chart.DefaultView.ChartLegend.Visibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.EnableAnimations = false; chart.DefaultView.ChartArea.AxisY.StripLinesVisibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.AxisX = new AxisX(); chart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Auto; chart.DefaultView.ChartArea.AxisX.StripLinesVisibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.AxisX.AutoRange = false; chart.DefaultView.ChartArea.AxisX.MinValue = data.Rows.Cast<DataRow>().Min(r => (int)r["x"]); chart.DefaultView.ChartArea.AxisX.MaxValue = data.Rows.Cast<DataRow>().Max(r => (int)r["x"]); var mapping = new SeriesMapping(); mapping.ItemsSource = data; mapping.ItemMappings.Add(new ItemMapping("x", DataPointMember.XValue) { FieldType = data.Columns["x"].DataType }); mapping.ItemMappings.Add(new ItemMapping("y", DataPointMember.YValue) { FieldType = data.Columns["y"].DataType }); mapping.SeriesDefinition = new LineSeriesDefinition(); chart.SeriesMappings.Add(mapping); // to force initial ranging calc to occur... chart_SizeChanged(null, null); } /// <summary> /// Event handler /// </summary> private void chart_SizeChanged(object sender, SizeChangedEventArgs e) { if (e == null || e.WidthChanged) { RecalcRange(); UpdateLabels(); } } /// <summary> /// Event handler /// </summary> private void updateLabelsButton_Click(object sender, RoutedEventArgs e) { // manual force recalculate of the labels UpdateLabels(); } private void RecalcRange() {#if true // pick a reasonable step value... var width = chart.DefaultView.ChartArea.ActualWidth; var range = chart.DefaultView.ChartArea.AxisX.MaxValue - chart.DefaultView.ChartArea.AxisX.MinValue; var step = Math.Max(1, (int)Math.Ceiling(range * chart.DefaultView.ChartArea.AxisX.TicksDistance / width)); chart.DefaultView.ChartArea.AxisX.Step = step;#else // it happens for certain constants, such as 8 (but not for 9 etc)... chart.DefaultView.ChartArea.AxisX.Step = 8;#endif } private void UpdateLabels() { foreach (var tickPoint in chart.DefaultView.ChartArea.AxisX.TickPoints) { // Reconstitutes the date string for the label from the integer value in x column.. var dt = new DateTime((int)tickPoint.Value / 12, ((int)tickPoint.Value % 12) + 1, 1); tickPoint.Label = dt.ToString("MMM-yy"); } }Table l_Table = new Table();l_Table.LayoutMode = TableLayoutMode.AutoFit;ownerSection.Blocks.Add(l_Table);foreach (IFeatureViewModel l_Node in treeViewModel.Nodes){ TableRow l_Row = new TableRow(); l_Table.Rows.Add(l_Row); Table l_InnerTable = new Table(); l_InnerTable.LayoutMode = TableLayoutMode.AutoFit; TableCell l_InnerCell = new TableCell(); l_Row.Cells.Add(l_InnerCell); l_InnerCell.Borders = new TableCellBorders(0.5f, BorderStyle.Single, System.Windows.Media.Colors.Red); l_InnerCell.Blocks.Add(l_InnerTable); TableRow l_InnerRow = new TableRow(); l_InnerTable.Rows.Add(l_InnerRow); ....
I created custom RadDataFilter , which contains dropdown list. DropDown List is OK. Now here is new requirement, I want to add telerik DateTimePicker. DateTimePicker Bind successfully, problem is that I can’t get selected date value. Therefore FilterDesripter.value is not set.
For Combobox here is template
<DataTemplate x:Key="ComboBoxEditor">
<telerik:RadComboBox SelectedValue="{Binding Value, Mode=TwoWay, FallbackValue=null}" MinWidth="100" />
</DataTemplate>
But how I’ll set selectedDate Value, here is my Code.
<DataTemplate x:Key="DateTimeEditor">
< telerik:DatePicker MinWidth="100" SelectedDate="{Binding Value}"></my:DatePicker>
</DataTemplate>