Hi, I am trying to change Enter key bevavior to act like Tab key. I found your documentation and blog post but these are all for the case when grid is in edit mode. My grid looks like this:
01.<telerik:RadGridView Name="Grid"02. Grid.Row="1"03. AutoGenerateColumns="False"04. ItemsSource="{Binding Orders}"05. ShowGroupPanel="False"06. RowIndicatorVisibility="Collapsed"07. BorderBrush="Black"08. Margin="5">09. <telerik:RadGridView.Columns>10. <telerik:GridViewDataColumn Header="Price" Width="150">11. <telerik:GridViewDataColumn.CellTemplate>12. <DataTemplate>13. <telerik:RadNumericUpDown Value="{Binding Price, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" SmallChange="0.1" LargeChange="1"/>14. </DataTemplate>15. </telerik:GridViewDataColumn.CellTemplate>16. </telerik:GridViewDataColumn>17. 18. <telerik:GridViewDataColumn Header="Volume" Width="*">19. <telerik:GridViewDataColumn.CellTemplate>20. <DataTemplate>21. <telerik:RadNumericUpDown Value="{Binding Volume, Mode=TwoWay, StringFormat=N2, UpdateSourceTrigger=LostFocus}" SmallChange="0.1" LargeChange="1"/>22. </DataTemplate>23. </telerik:GridViewDataColumn.CellTemplate>24. </telerik:GridViewDataColumn>25. </telerik:RadGridView.Columns>26. </telerik:RadGridView>
And my custom keyboard command provider looks like this:
01.public class CustomKeyboardCommandProvider : DefaultKeyboardCommandProvider02. {03. public CustomKeyboardCommandProvider(GridViewDataControl grid) : base(grid)04. {05. }06. 07. public override IEnumerable<ICommand> ProvideCommandsForKey(Key key)08. {09. if (key == Key.Enter)10. {11. var tabCommands = base.ProvideCommandsForKey(Key.Tab).ToList();12. 13. return tabCommands;14. }15. 16. return base.ProvideCommandsForKey(key).ToList();17. }18. }
Is there a way how to do it for my case?
Thank you.
Karel
I've just edited the First_Look example of the PdfViewer. If I generate a text export, by using:
var provider = new PdfFormatProvider(str, FormatProviderSettings.ReadOnDemand);
RadFixedDocument doc = provider.Import();
textBlock.Text = new TextFormatProvider().Export(doc, new TextFormatProviderSettings());
I recognize, that the results are not as expected. Some special characters are not correctly translated. In figure 1 the special character ‘ (\u2018) is displayed in the pdfview correctly whereas in the generated text the character was translated in \u0091 which is for private use. Also for non special characters there is also an unexpected behavior visible. In figure 2 it is visible that the 'fl' is missing in the word 'beeinflussen'. The string is translated in "beein\u001fussen". This means that the two characters 'fl' is replaced by the single character \u001f. This \u001f means 'Unit Seperator' which makes in this context not much sense for me.
Thank you

I am trying to add a list of lists of lists to a radtreeView but the child elements never appear, I have used a HeirichalDataTemplate as a test for the first 2 elements, is there something I am missing , given the following xalm
<pre>
<telerik:RadTabItem Header="Lookup Sets">
<telerik:RadTreeView IsLoadOnDemandEnabled="True" ItemsSource="{Binding AttributeLookupSetConversions}">
<telerik:RadTreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type cm:AttributeLookupSetConversion}">
<CheckBox Content="{Binding Path=Name}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerikDocking:RadSplitContainer}}, Path=DataContext.UpdateSelectionCommand}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type cm:AttributeConversion}">
<CheckBox Content="{Binding Path=Name}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerikDocking:RadSplitContainer}}, Path=DataContext.UpdateSelectionCommand}"/>
</HierarchicalDataTemplate>
</telerik:RadTreeView.Resources>
</telerik:RadTreeView>
</telerik:RadTabItem>
</pre>
I cant seem to get the UI to show its child elements

Hi,
Is it possible to change the way that MDX is generated by the PivotGrid when filters are applied?
Currently when I apply a Month filter in my time dimension for e.g., this is done by adding the filter value as a sub-cube query in the from clause, rather than placing it in the WHERE clause.
So instead of having
SELECT x ON 0, y ON 1
FROM <cube>
WHERE ([time].[month].&[z])
The pivot grid generates
SELECT x ON 0, y ON 1
FROM (SELECT [time].[month].&[z] FROM <cube>)
This is generally fine, but when we have calculated measures in the cube which rely on knowing where you are in the time hierarchy, (i.e. [time].[month].currentmember) then this distorts the calculation because the scope is handled in the sub-cube and the main query believes that [time].[month].currentmember is 'All' rather than Month Z as the query above suggests.
Is there a way to tell the grid to use the former method? Failing that, how can we access the time filter from the calculations?


I have a GridViewDataColumn in which I need the cells to use/display a mask both in view/edit mode. In order to do this I have set the CellTemplate and the CellEditTemplate as you can see below. I cannot use the GridViewMaskedInputColumn because it does not allow me to specify different masks per cell. One mask per column will not work in my scenario (see attached picture).
There is a slight difference between view and edit mode that I would like help with. In edit mode, the RadMaskedTextBox fills the cell, but in view mode, the RadMaskedTextBox does not quite fill the cell. I would like masked textbox to fill the cell regardless of whether it is in edit or view mode.
I have considered putting a Margin="3,0,0,0" on the CellEditTemplate, this means the textbox will not fill the cell in either view/edit mode - not idea....
<telerik:GridViewDataColumn Header="Value" ValidatesOnDataErrors="InEditMode" DataMemberBinding="{Binding Value}" Width="*"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <telerik:RadMaskedTextInput Mask="{Binding ValueMask}" Value="{Binding Value}" TextMode="MaskedText" IsEnabled="False" SelectionOnFocus="CaretToBeginning" IsLastPositionEditable="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate> <telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate> <telerik:RadMaskedTextInput Mask="{Binding ValueMask}" Value="{Binding Value}" TextMode="MaskedText" SelectionOnFocus="CaretToBeginning" IsLastPositionEditable="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </DataTemplate> </telerik:GridViewDataColumn.CellEditTemplate></telerik:GridViewDataColumn>
Hi!
There is any way to create custom aggregate for QueryableDataProvider?
I want to create CustomDistinct aggregate, I did it successfully for LocalDataSourceProvider, and I need it also for QueryableDataProvider.
Here is my code, unfortunately, it is not working at all..
Hi!
There is any way to create custom aggregate for QueryableDataProvider?
I want to create CustomDistinct aggregate, I did it successfully for LocalDataSourceProvider, and I neet also for QueryableDataProvider.
Here is my code, unfurtonately, it is not working at all..
I see "CountDistinct" in "More aggregate options" window, but when i choose it, the pivot got an error.
using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using Telerik.Pivot.Core;using Telerik.Pivot.Core.Fields;using Telerik.Pivot.Queryable;namespace YA.Pivot.Queryable{ public class MyQueryableDataProvider : QueryableDataProvider { protected override void OnPrepareDescriptionForField(PrepareDescriptionForFieldEventArgs args) { base.OnPrepareDescriptionForField(args); if (args.DescriptionType == DataProviderDescriptionType.Aggregate) { var old = args.Description as QueryablePropertyAggregateDescriptionBase; args.Description = new CustomPropertyAggregateDescription() { PropertyName = old.PropertyName, FunctionName = old.FunctionName, AggregateFunction = old.AggregateFunction, CustomName = old.CustomName, StringFormat = old.StringFormat }; } } } internal class CustomPropertyAggregateDescription : QueryablePropertyAggregateDescriptionBase { private enum MyAggregateFunctions { CountDistinct = -100 } protected override Cloneable CreateInstanceCore() { return new CustomPropertyAggregateDescription() { AggregateFunction = this.AggregateFunction, CustomName = this.CustomName, FunctionName = this.FunctionName, PropertyName = this.PropertyName, StringFormat = this.StringFormat, StringFormatSelector = this.StringFormatSelector, TotalFormat = this.TotalFormat }; } private bool IsCountDistinct => (int)base.AggregateFunction == (int)MyAggregateFunctions.CountDistinct; protected override Expression CreateAggregateExpression(Expression enumerableExpression, string aggregatedValueName) { if (enumerableExpression == null) { throw new ArgumentNullException(nameof(enumerableExpression)); } if (IsCountDistinct) { return CreateCountDistinctExpression(enumerableExpression, aggregatedValueName); } return base.CreateAggregateExpression(enumerableExpression, aggregatedValueName); } private Expression CreateCountDistinctExpression(Expression enumerableExpression, string aggregatedValueName) { Type itemType = TypeExtensions.ExtractItemTypeFromEnumerableType(enumerableExpression.Type); var selectParamExp = Expression.Parameter(itemType, "e"); var selectPropAccessExp = Expression.Property(selectParamExp, aggregatedValueName); LambdaExpression selectLambdaExpression = Expression.Lambda(selectPropAccessExp, selectParamExp); var select = Expression.Call( typeof(Enumerable), "Select", new[] { itemType, selectLambdaExpression.Body.Type }, enumerableExpression, selectLambdaExpression); var distinct = Expression.Call( typeof(Enumerable), "Distinct", new[] { selectLambdaExpression.Body.Type }, select); var count = Expression.Call( typeof(Enumerable), "Count", new[] { selectLambdaExpression.Body.Type }, distinct); return count; } protected override IEnumerable<object> SupportedAggregateFunctions => base.SupportedAggregateFunctions.Concat(new object[] { MyAggregateFunctions.CountDistinct }); } internal static class TypeExtensions { public static Type ExtractItemTypeFromEnumerableType(Type type) { var enumerableType = type.FindGenericType(typeof(IEnumerable<>)); if (enumerableType == null) { throw new ArgumentException("Provided type is not IEnumerable<>", nameof(type)); } return enumerableType.GetGenericArguments().First(); } private static Type FindGenericType(this Type type, Type genericType) { while (type != null && type != typeof(object)) { if (type.IsGenericType && type.GetGenericTypeDefinition() == genericType) { return type; } if (genericType.IsInterface) { foreach (Type intfType in type.GetInterfaces()) { Type found = intfType.FindGenericType(genericType); if (found != null) { return found; } } } type = type.BaseType; } return null; } }}I have used RadGridView with data collection binded to it.
When I try to search for value in selected column with Filter pop up, on selected column,
I am able to filter collection with checkbox selection.
But when I enter value in the pop textbox and press filter button.
It is not filtering the collection.
I have checked both Distinct and filed filter properties of ColumnFilterDescriptor .It seems to look correct .
Can anybody please help me out to solve the problem?