Completed
Last Updated: 21 Nov 2014 11:22 by ADMIN
ADMIN
Dess | Tech Support Engineer, Sr.
Created on: 31 Oct 2014 13:09
Category: PivotGrid
Type: Bug Report
1
FIX. RadPivotGrid - Month names are not displayed according to the LocalDataSourceProvider.Culture in the filter popup
To reproduce:

private void Form1_Load(object sender, EventArgs e)
{
    this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);
    
    LocalDataSourceProvider dataProvider = new LocalDataSourceProvider(); 
    dataProvider.Culture = new System.Globalization.CultureInfo("ru-RU"); 
    dataProvider.ItemsSource = this.ordersBindingSource;

    dataProvider.BeginInit();
    dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Year, GroupComparer = new GroupNameComparer() });
    dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Quarter, GroupComparer = new GroupNameComparer() });
    dataProvider.RowGroupDescriptions.Add(new DateTimeGroupDescription() { PropertyName = "OrderDate", Step = DateTimeStep.Month, GroupComparer = new GroupNameComparer() });
    dataProvider.ColumnGroupDescriptions.Add(new PropertyGroupDescription() { PropertyName = "EmployeeID", GroupComparer = new GrandTotalComparer() });
    dataProvider.EndInit();

    dataProvider.BeginInit();
    dataProvider.AggregateDescriptions.Add(new PropertyAggregateDescription() { PropertyName = "Freight", AggregateFunction = AggregateFunctions.Sum });
    dataProvider.AggregateDescriptions.Add(new PropertyAggregateDescription() { PropertyName = "Freight", AggregateFunction = AggregateFunctions.Average });
    dataProvider.EndInit();

    this.radPivotGrid1.DataProvider = dataProvider;
}


Workaround:

CultureInfo russianCultureInfo = new System.Globalization.CultureInfo("ru-RU"); 
List<string> monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.ToList();

public Form1()
{
    InitializeComponent();
    this.radPivotGrid1.GroupDescriptorElementCreating += radPivotGrid1_GroupDescriptorElementCreating;
}

private void radPivotGrid1_GroupDescriptorElementCreating(object sender, GroupDescriptorElementCreatingEventArgs e)
{
    if (e.GroupDescriptorElement.Text == "Month")
    {
        e.GroupDescriptorElement.FilterPopup.PopupOpening -= FilterPopupPopupOpening;
        e.GroupDescriptorElement.FilterPopup.PopupOpening += FilterPopupPopupOpening;
    }
}

private void FilterPopupPopupOpening(object sender, CancelEventArgs args)
{
    PivotGroupFilterPopup popup = sender as PivotGroupFilterPopup;
    if (popup != null)
    {
        popup.TreeViewMenuItem.TreeElement.TreeView.NodeFormatting -= TreeView_NodeFormatting;
        popup.TreeViewMenuItem.TreeElement.TreeView.NodeFormatting += TreeView_NodeFormatting;
    }
}

private void TreeView_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
    DateTime date;
    int monthIndex = monthNames.IndexOf(e.Node.Text);
  
    if (monthIndex > -1)
    {
        e.Node.Text = russianCultureInfo.DateTimeFormat.MonthNames[monthIndex];
    }
}
0 comments