Telerik Forums
UI for WPF Forum
1 answer
105 views
Hello everyone

I have a RadGridView whose DataLoadMode is set to Asynchronous, and I'm experiencing some trouble with sorting.

In my case the grid is filled with approx 14,000 elements, that can be represented by trips made by clients. Each client has a number, and has made several trips. The columns are, among others, the client number, and the destination of the trip.

Here are the steps that reproduce my problem :
1. I first select only one client number in the standard filtering from the client number column. The display is refreshed and only the trips of the selected client are displayed (~ 4-5 elements)
2. Now I click on header of destination column, normally causing the alphabetical sorting with respect to destination. But instead of this behaviour, the grid refreshes and no elements are shown.

I have put some breakpoints, and found out that the display is not in cause, as the grid.Items is simply set with an emply collection when I click on the column header.

The surprising thing is that it always worked correctly before, when I was using synchronous data load mode.

Am I the only one experiencing trouble with this feature ?

Thank's in advance for your time

Kind regards,
Olivier
Vlad
Telerik team
 answered on 21 Mar 2012
3 answers
307 views
Hi,

I am creating a booking system and need to disable certain dates in the RadDatePicker if the products are not available on that day.
Is this possible with a RadDateTimePicker? I have read all the documentation and and the selectable range looks like it would work but I need disable multiple single days.


Thanks
Georgi
Telerik team
 answered on 21 Mar 2012
6 answers
80 views

Hi,

It seems a bug in the GridViewBoundColumnBase.CanFilter() of the 2012.1 release.

I'm binding my grid to a collection of ExpandoObjects, and I found that when I set grid.IsFilteringAllowed to true, the FilteringDropDown controls shows up on column headers, but they didn't go hidden when I set grid.IsFilteringAllowed to false.

By looking at the disassembled code, I found that GridViewBoundColumnBase.CanFilter() has been changed to this:

        public override bool CanFilter()
         {
             return (base.CanFilter() || (this.IsBoundToDynamicType() && (this.EffectiveFilteringType != null)));
         }

In my case base.CanFilter() is false and this.IsBoundToDynamicType() && (this.EffectiveFilteringType != null)) is always true, which means there's no way for me to simply toggle grid.IsFilteringAllowed to show/hide the filter control.

Jason

Jason
Top achievements
Rank 1
 answered on 21 Mar 2012
0 answers
67 views
hi there,

i want to export data from radGridView to excel in wpf  , how can i perform this functionality
plz give an example or demo with code because i am new to wpf

thanks
Regards

usman ilyas
Usman
Top achievements
Rank 1
 asked on 21 Mar 2012
3 answers
176 views

Hello,

I have a problem with the tileview control.

I have a tileview in my page with RadFluidContentControl to have different view depends on the size :

<telerik:RadTileView IsItemsAnimationEnabled="False">
    <telerik:RadTileViewItem>
        <telerik:RadFluidContentControl
            TransitionDuration="0"
            State="Large"
            SmallToNormalThreshold="400 400"
            NormalToSmallThreshold="400 400"
            NormalToLargeThreshold="600 600"
            LargeToNormalThreshold="600 600">
            <telerik:RadFluidContentControl.SmallContent>
                <StackPanel x:Name="SmallContent">
                    <TextBlock Text="Small"/>
                    <TextBlock Text="{Binding MyList.Count}"/>
                    <ListBox ItemsSource="{Binding MyList, Mode=TwoWay}"/>
                </StackPanel>
            </telerik:RadFluidContentControl.SmallContent>
            <telerik:RadFluidContentControl.Content>
                <StackPanel x:Name="Content">
                    <TextBlock Text="Normal"/>
                    <TextBlock Text="{Binding MyList.Count}"/>
                    <ListBox ItemsSource="{Binding MyList, Mode=TwoWay}"/>
                </StackPanel>
            </telerik:RadFluidContentControl.Content>
            <telerik:RadFluidContentControl.LargeContent>
                <StackPanel x:Name="LargeContent">
                    <TextBlock Text="Large"/>
                    <TextBlock Text="{Binding MyList.Count}"/>
                    <ListBox ItemsSource="{Binding MyList, Mode=TwoWay}"/>
                </StackPanel>
            </telerik:RadFluidContentControl.LargeContent>
        </telerik:RadFluidContentControl>
    </telerik:RadTileViewItem>
</telerik:RadTileView>
In this sample this is the same content for Small, Normal and Large Content. It displays the number of item in a list and the content of the list.

MyList is just a List of String with 2 elements.

When I ran the application, only the listbox in the normal content displayed the 2 elements. In the small and large content the list was empty.

But in all contents (small, normal and large) the textblock displayed the correct number of elements in my list (2).

Do I something wrong ?

Thanks in advance for your answer.

Regards,

Patrick

Zarko
Telerik team
 answered on 21 Mar 2012
5 answers
268 views
Hi,

I ran into the problem that I need to get access to the type of a property bound to a column. I need to acomplish this on the AutoGeneratingColumn event.


I've manage to do it with a common grid:

private void dtgRestuls_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
               var columnAttributes = ((PropertyDescriptor)e.PropertyDescriptor).Attributes.OfType<ColumnAttribute>();
               
if (columnAttributes.Count() == 0)
                {
                    e.Cancel = true;
                }
                else
                {
                    e.Cancel = !IsColumnMarkAsVisible(columnAttributes);
                }
            }

            
        }

The problem is that DataGridAutoGeneratingColumnEventArgs exposes a PropertyDescriptor property, but GridViewAutoGeneratingColumnEventArgs don't.


Anyone got any idea of where to find it on GridViewAutoGeneratingColumnEventArgs, or maybe a workaround?

Thanks!
Andreas
Top achievements
Rank 1
 answered on 21 Mar 2012
2 answers
171 views
Hello,  I've been tinkering with using the RadControls for WPF in my projects and am generally pleased with the toolkit.  The hotfix situation is perplexing me though.

I noticed it pulls down updates automatically, and that the Telerik references in my project are pointing to one of various folders under, for example, C:\Users\James\AppData\Roaming\Telerik\Updates\RadControls_for_WPF40_2011_2_0920_Dev_hotfix\ ...

I like that it keeps my working project up-to-date with the latest builids.  But this is making it difficult for me to set up a clean build environment.

If I want to mark my code as a certain "release", for example, and check everything into version control (I'm now using Mercurial), I like to include the 3rd-party libraries along with it. So that it can always be reproduced exactly as built.  Normally I try to have all 3rd-party libraries within a subfolder in my development folder (which is C:\Apps), as for example:  C:\Apps\VendorLibs\Telerik
That way, it is obvious where to add references from, and the version-control/build commands know where to get their stuff. Also, this makes it straightforward to set up a continuous-build facility on a separate box to detect checkins, run the build, run the unit-tests, and poke me as soon as I break something.  Or, to create a virtual-machine (I'm using VMWare) of a fresh Windows environment, to test an installer on.  Also, I develop on two boxes at the same time. With the C:\Apps folder synced between them (using a program similar to DropBox). This would work a lot better if Telerik's libraries were within that folder, instead of elsewhere on a totally different path.

So, my question is: Is there a way to configure the hotfix facility of Telerik's tools, such that instead of using those hotfix folders down in \Users\James\AppData\Roaming, which change periodically, to instead have them placed automatically within a single stable folder of my choosing?
Petar
Telerik team
 answered on 21 Mar 2012
10 answers
155 views
Hi,

i cant copy the content from the footers into the clipboard. The footer row is always empty in clipboard!

ClipboardCopyMode is "All"

My Style:

<Style x:Key="DataFooter" TargetType="GridView:GridViewFooterCell">
        <Setter Property="Content">
            <Setter.Value>
                <StackPanel>
                    <GridView:AggregateResultsList ItemsSource="{Binding}" VerticalAlignment="Center">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                    <TextBlock VerticalAlignment="Center" Text="{Binding Caption}" />
                                    <TextBlock VerticalAlignment="Center" Text="{Binding FormattedValue}" />
                                </StackPanel>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Vertical" />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </GridView:AggregateResultsList>
                </StackPanel>
            </Setter.Value>
        </Setter>
    </Style>

Regards,
Thomas


Thomas
Top achievements
Rank 1
 answered on 21 Mar 2012
1 answer
165 views
Hi,

I have three classes Employee, EmployeeCollection and Address

I have set the datacontext to a EmployeeCollection this works ok until I get to the Address Field then i only get one textbox. I have tried to create a DataTemplate for Address but  it doesn't seem to use the template I have created. 

Thanks 

David

public class Address
    {
        String _Street;
        String _City;
        String _Town;
        String _County;
        String _PostCode;
 
        public String Street
        {
            get
            {
                return this._Street;
            }
            set
            {
                this._Street = value;
                NotifyPropertyChanged(() => Street);
            }
        }
        public String City
        {
            get
            {
                return this._City;
            }
            set
            {
                this._City = value;
                NotifyPropertyChanged(() => City);
            }
        }
        public String Town
        {
            get
            {
                return this._Town;
            }
            set
            {
                this._Town = value;
                NotifyPropertyChanged(() => Town);
            }
        }
        public String County
        {
            get
            {
                return this._County;
            }
            set
            {
                this._County = value;
                NotifyPropertyChanged(() => County);
            }
        }
        public String PostCode
        {
            get
            {
                return this._PostCode;
            }
            set
            {
                this._PostCode = value;
                NotifyPropertyChanged(() => PostCode);
            }
        }
 
        public Address()
        {
        }
 
        public Address(String street, String city, String town, String county, String postCode)
        {
            this.Street = street;
            this.City = city;
            this.Town = town;
            this.County = county;
            this.PostCode = postCode;
        }
 
        #region PropertyNotify
 
         
        [field: NonSerializedAttribute()]
        public event PropertyChangedEventHandler PropertyChanged = delegate { };
 
        public readonly Action<Action> _synchronousInvoker;
 
        public Address(Action<Action> synchronousInvoker)
        {
            _synchronousInvoker = synchronousInvoker;
        }
 
        public void NotifyPropertyChanged<T>(Expression<Func<T>> expr)
        {
            var body = expr.Body as MemberExpression;
            if (body != null)
            {
                try
                {
                    if (_synchronousInvoker != null)
                        _synchronousInvoker(() => InvokePropertyChanged(expr));
                    else
                        InvokePropertyChanged(expr);
                }
                catch (Exception Ex)
                {
                    if (Ex.Message == "Invoke or BeginInvoke cannot be called on a control until the window handle has been created.")
                    {
                        InvokePropertyChanged(expr);
                    }
                }
            }
        }
 
        private void InvokePropertyChanged<T>(Expression<Func<T>> expr)
        {
            var body = expr.Body as MemberExpression;
            if (body != null)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(body.Member.Name));
                }
            }
        }
 
        #endregion
    }
 
 public class Employee : INotifyPropertyChanged
    {
        Int32 _EmployeeID;
        String _FirstName;
        String _SurName;
        Location _DefaultStore;
        float _Sallary;
        float _HourlyRate;
        EmployeeType _EmployeeType;
        Address _Address;
 
        public Int32 EmployeeID
        {
            get
            {
                return _EmployeeID;
            }
            set
            {
                _EmployeeID = value;
                NotifyPropertyChanged(() => EmployeeID);
            }
        }
        public String FirstName
        {
            get
            {
                return this._FirstName;
            }
            set
            {
                this._FirstName = value;
                NotifyPropertyChanged(() => FirstName);
            }
        }
        public String SurName
        {
            get
            {
                return this._SurName;
            }
            set
            {
                this._SurName = value;
                NotifyPropertyChanged(() => SurName);
            }
        }
        public Location DefaultStore
        {
            get
            {
                return this._DefaultStore;
            }
            set
            {
                this._DefaultStore = value;
                NotifyPropertyChanged(() => DefaultStore);
            }
        }
        public float Sallary
        {
            get
            {
                return this._Sallary;
            }
            set
            {
                this._Sallary = value;
                NotifyPropertyChanged(() => Sallary);
            }
        }
        public float HourlyRate
        {
            get
            {
                return this._HourlyRate;
            }
            set
            {
                this._HourlyRate = value;
                NotifyPropertyChanged(() => HourlyRate);
            }
        }
        public EmployeeType EmployeeType
        {
            get
            {
                return this._EmployeeType;
            }
            set
            {
                this._EmployeeType = value;
                NotifyPropertyChanged(() => EmployeeType);
            }
        }
        public Address Address
        {
            get
            {
                return _Address;
            }
            set
            {
                _Address = value;
                NotifyPropertyChanged(() => Address);
            }
        }
 
        public Employee()
        {
        }
 
        public Employee(Int32 employeeID, String firstName, String surName, Location defaultStore, float sallary, float hourlyRate, EmployeeType employeeType, Address address)
        {
            this._EmployeeID = employeeID;
            this._FirstName = firstName;
            this._SurName = surName;
            this._DefaultStore = defaultStore;
            this._Sallary = sallary;
            this._HourlyRate = hourlyRate;
            this._EmployeeType = employeeType;
            this._Address = address;
        }
 
        #region PropertyNotify
 
        [field: NonSerializedAttribute()]
        public event PropertyChangedEventHandler PropertyChanged = delegate { };
 
        public readonly Action<Action> _synchronousInvoker;
 
        public Employee(Action<Action> synchronousInvoker)
        {
            _synchronousInvoker = synchronousInvoker;
        }
 
        public void NotifyPropertyChanged<T>(Expression<Func<T>> expr)
        {
            var body = expr.Body as MemberExpression;
            if (body != null)
            {
                try
                {
                    if (_synchronousInvoker != null)
                        _synchronousInvoker(() => InvokePropertyChanged(expr));
                    else
                        InvokePropertyChanged(expr);
                }
                catch (Exception Ex)
                {
                    if (Ex.Message == "Invoke or BeginInvoke cannot be called on a control until the window handle has been created.")
                    {
                        InvokePropertyChanged(expr);
                    }
                }
            }
        }
 
        private void InvokePropertyChanged<T>(Expression<Func<T>> expr)
        {
            var body = expr.Body as MemberExpression;
            if (body != null)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(body.Member.Name));
                }
            }
        }
 
        #endregion
    }
 
    public class EmployeeCollection : ObservableCollection<Employee>
    {
        public EmployeeCollection()
        {
        }
    }
Maya
Telerik team
 answered on 21 Mar 2012
3 answers
84 views
Hello,

I am using Telerik version 2011.2. In a lot of areas in the application I am writing I am using the RadGridView.
I would like to know if there is a way to have a "second header" above the regular headers.

Basically, I would like to be able to do something akin to the center and merge functions in excel, having the individual headers above the cells and another set of headers which can span more then one column above those.

I have a sample (352KB .jpg) but it will not upload.
Any ideas on how to accomplish this would be appreciated.
Thank you,

Eli
Vlad
Telerik team
 answered on 21 Mar 2012
Narrow your results
Selected tags
Tags
GridView
General Discussions
Chart
RichTextBox
Docking
ScheduleView
ChartView
TreeView
Diagram
Map
ComboBox
TreeListView
Window
RibbonView and RibbonWindow
PropertyGrid
DragAndDrop
TabControl
TileView
Carousel
DataForm
PDFViewer
MaskedInput (Numeric, DateTime, Text, Currency)
AutoCompleteBox
DatePicker
Buttons
ListBox
GanttView
PivotGrid
Spreadsheet
Gauges
NumericUpDown
PanelBar
DateTimePicker
DataFilter
Menu
ContextMenu
TimeLine
Calendar
Installer and Visual Studio Extensions
ImageEditor
BusyIndicator
Expander
Slider
TileList
PersistenceFramework
DataPager
Styling
TimeBar
OutlookBar
TransitionControl
Book
FileDialogs
ToolBar
ColorPicker
TimePicker
SyntaxEditor
MultiColumnComboBox
VirtualGrid
Wizard
ExpressionEditor
NavigationView (Hamburger Menu)
WatermarkTextBox
DesktopAlert
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
ProgressBar
Sparkline
LayoutControl
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
Licensing
WebCam
CardView
DataBar
FilePathPicker
PasswordBox
Rating
SplashScreen
Accessibility
Callout
CollectionNavigator
Localization
AutoSuggestBox
Security
VirtualKeyboard
HighlightTextBlock
TouchManager
StepProgressBar
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?