Hello,
I have created RadPivotControl dynamically and added it to a windows form. when i double click on data i cannot see the underlying data.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Added by User
using Telerik.WinControls.UI;
using Telerik.Pivot.Core;
using System.Data;
using System.Windows.Forms;
namespace BusinessLogic
{
public class RadControl
{
public RadPivotGrid fn_CreatePivotControl(DataTable inDt)
{
RadPivotGrid pivotGrid = new RadPivotGrid();
pivotGrid.DataSource = inDt;
pivotGrid.Name = "pivotFilteredData";
pivotGrid.ThemeName = "EvalFormTheme";
pivotGrid.ShowFilterArea = true;
GroupNameComparer groupNameComparer = new GroupNameComparer();
foreach (DataColumn col in inDt.Columns)
{
List<string> list = new List<string>();
if (col.ColumnName.ToString().ToUpper() != "PV")
{
list = inDt.AsEnumerable().Select(p => p.Field<String>(col.ColumnName.ToString())).Distinct().ToList();
}
string strColumnName = col.ColumnName;
if (list.Count == 1)
{
PropertyFilterDescription propertyFilterDescription1 = new PropertyFilterDescription();
propertyFilterDescription1.Condition = null;
propertyFilterDescription1.CustomName = null;
propertyFilterDescription1.PropertyName = strColumnName;
pivotGrid.FilterDescriptions.Add(propertyFilterDescription1);
}
else if (strColumnName.ToUpper() == "PV")
{
PropertyAggregateDescription propertyAggregateDescription1 = new PropertyAggregateDescription();
SumAggregateFunction sumAggregateFunction1 = new SumAggregateFunction();
propertyAggregateDescription1.AggregateFunction = sumAggregateFunction1;
propertyAggregateDescription1.CustomName = null;
propertyAggregateDescription1.IgnoreNullValues = false;
propertyAggregateDescription1.PropertyName = strColumnName;
propertyAggregateDescription1.StringFormat = null;
propertyAggregateDescription1.StringFormatSelector = null;
propertyAggregateDescription1.TotalFormat = null;
pivotGrid.AggregateDescriptions.Add(propertyAggregateDescription1);
}
else if (strColumnName.ToUpper() == "PERIOD" || strColumnName.ToUpper() == "TIMESLICE")
{
PropertyGroupDescription propertyGroupDescription = new PropertyGroupDescription();
propertyGroupDescription.CustomName = null;
// propertyGroupDescription.GroupComparer = groupNameComparer;
propertyGroupDescription.GroupFilter = null;
propertyGroupDescription.PropertyName = strColumnName;
propertyGroupDescription.ShowGroupsWithNoData = false;
propertyGroupDescription.SortOrder = Telerik.Pivot.Core.SortOrder.Ascending;
pivotGrid.ColumnGroupDescriptions.Add(propertyGroupDescription);
}
else if (strColumnName.ToUpper() == "SCENARIO")
{
PropertyFilterDescription propertyFilterDescription1 = new PropertyFilterDescription();
propertyFilterDescription1.Condition = null;
propertyFilterDescription1.CustomName = null;
propertyFilterDescription1.PropertyName = strColumnName;
pivotGrid.FilterDescriptions.Add(propertyFilterDescription1);
}
else
{
PropertyGroupDescription propertyGroupDescription = new PropertyGroupDescription();
propertyGroupDescription.CustomName = null;
propertyGroupDescription.GroupFilter = null;
propertyGroupDescription.PropertyName = strColumnName;
propertyGroupDescription.ShowGroupsWithNoData = false;
propertyGroupDescription.SortOrder = Telerik.Pivot.Core.SortOrder.Ascending;
pivotGrid.RowGroupDescriptions.Add(propertyGroupDescription);
}
}
pivotGrid.ColumnGrandTotalsPosition = Telerik.WinControls.UI.TotalsPos.None;
pivotGrid.ColumnsSubTotalsPosition = Telerik.WinControls.UI.TotalsPos.None;
// row total
pivotGrid.RowGrandTotalsPosition = Telerik.WinControls.UI.TotalsPos.None;
pivotGrid.RowsSubTotalsPosition = Telerik.WinControls.UI.TotalsPos.None;
foreach (PropertyGroupDescriptionBase groupDescription in pivotGrid.RowGroupDescriptions)
{
DistinctValuesProvider valuesProvider = ((IDistinctValuesDescription)groupDescription).GetDisctinctValuesProvider();
List<object> distinctItems = new List<object>(valuesProvider.DisctinctValues);
}
pivotGrid.MouseDoubleClick += pivotGrid_MouseDoubleClick;
return pivotGrid;
}
private void pivotGrid_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
RadPivotGrid pivotGrid = (RadPivotGrid)sender;
PivotCellElement cell = pivotGrid.ElementTree.GetElementAtPoint(e.Location) as PivotCellElement;
if (cell != null)
{
IGroup row = cell.Row.Group; IGroup column = cell.Column.Group;
LocalDataSourceProvider localProvider = pivotGrid.DataProvider as LocalDataSourceProvider;
localProvider.GetUnderlyingData(row, column);
}
}
}
}
}