Telerik Forums
UI for WPF Forum
5 answers
221 views
Hello,

We're working on a project to pull data from servers.  The code goes over the network to each server of interest and retrieves some server information (i.e. name, Operating System, etc.) which in turn is added to the ObservableCollection.  Everything works fine; however, it can take several minutes to go to each server and pull back the data.  Therefore, we would like to populate the gridview as the data is returned.  For example...application retrieves the name of server 1, the gridview displays server 1 data while in the background server 2 data is retrieved and displayed once it returns, etc.

So here is what we've tried with Gridview bound to an ObservableCollection.

Retrieving the data with a backgroundworker (which works, but the data still does not display on the grid as retrieved).
Tried other Data Types (DataSet, List, etc.) - they all work but all of the data has to be retrieved before being displayed.
Looked at the OnCollectionChanged event and as each server is queried and populated into the ObservableCollection - the event it fired.
Tried changing the DataLoadMode to Asynchronous

Below is the code behind...

using System;  
using System.Collections.Generic;  
using System.Collections.ObjectModel;  
using System.Collections.Specialized;  
using System.ComponentModel;  
using System.DirectoryServices;  
using System.Linq;  
using System.Text;  
using System.Threading;  
using System.Windows;  
using System.Windows.Controls;  
using System.Windows.Data;  
using System.Windows.Documents;  
using System.Windows.Input;  
using System.Windows.Media;  
using System.Windows.Media.Imaging;  
using System.Windows.Shapes;  
using System.Windows.Threading;  
using Telerik.Windows.Controls;  
 
namespace TestXmlSerialize123  
{  
    /// <summary>  
    /// Interaction logic for Window2.xaml  
    /// </summary>  
    public partial class Window2 : Window  
    {  
        public Window2()  
        {  
            InitializeComponent();  
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);  
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);  
            worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);  
            //worker.WorkerReportsProgress = true;  
            //this.radGridView2.IsBusy = true;  
            DomainControllerList.CollectionChanged += OnCollectionChanged;  
 
 
        }
        #region Variables  
          
        BackgroundWorker worker = new BackgroundWorker();
        #endregion  
 
        private void worker_DoWork(object sender, DoWorkEventArgs e)  
        {  
            //Thread.Sleep(5000);  
            FetchDomainControllers();  
 
        }  
 
        private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)  
        {  
            this.radGridView2.ItemsSource = e.UserState;  
 
        }  
 
        private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)  
        {  
            this.radGridView2.ItemsSource = DomainControllerList;  
        }  
 
        private ObservableCollection<DADdomainControllers> _domainControllerList = new ObservableCollection<DADdomainControllers>();  
        public ObservableCollection<DADdomainControllers> DomainControllerList  
        {  
            get { return _domainControllerList; }  
        }  
 
        private void FetchDomainControllers()  
        {  
 
 
 
            DirectoryEntry rootDSE = new DirectoryEntry("LDAP://rootDSE");  
            string configurationNamingContext = (string)rootDSE.Properties["configurationNamingContext"].Value;  
 
            DirectoryEntry deConfig = new DirectoryEntry("LDAP://" + configurationNamingContext);  
            DirectorySearcher dsConfig = new DirectorySearcher(deConfig);  
            dsConfig.Filter = "(objectClass=ntDSDSA)";  
 
            SearchResultCollection results = dsConfig.FindAll();  
 
            foreach (SearchResult Result in results)  
            {  
 
                DirectoryEntry deDomain = Result.GetDirectoryEntry();  
 
                if (deDomain != null)  
                {  
 
                    string _dnsHostName = deDomain.Parent.Properties["DNSHostName"].Value.ToString();  
                    string _serverReference = deDomain.Parent.Properties["serverReference"].Value.ToString();  
                    _domainControllerList.Add(new DADdomainControllers { dnsHostName = _dnsHostName, distinguishedName = _serverReference });  
                    //radGridView2.Dispatcher.Invoke(DispatcherPriority.Normal,(Action)(() => { radGridView2.ItemsSource = DomainControllerList; }));  
                    //this.radGridView2.ItemsSource = DomainControllerList;  
 
                }  
            }  
 
 
 
        }  
 
        public class DADdomainControllers  
        {  
            public string dnsHostName {getset;}  
            public string distinguishedName {getset;}  
        }  
 
        private void Window_Loaded(object sender, RoutedEventArgs e)  
        {  
 
                          
        }  
 
        private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)  
        {  
            //MessageBox.Show("Collection Changed");  
              
 
        }  
 
        private void radGridView2_Loaded(object sender, RoutedEventArgs e)  
        {  
            Thread.Sleep(3000);  
            worker.RunWorkerAsync();  
        }  
 
    }  

Not much to the XAML but here it is...

<Window x:Class="TestXmlSerialize123.Window2" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
    Title="Window2" Height="600" Width="800" Loaded="Window_Loaded">  
    <Grid> 
        <telerik:RadGridView Name="radGridView2" DataLoadMode="Asynchronous" Loaded="radGridView2_Loaded" /> 
    </Grid> 
</Window> 


Vlad
Telerik team
 answered on 23 Mar 2010
3 answers
215 views
Hello,

I'm using the telerik TreeView, which uses the default telerik style for the scrollbar. The other scrollbars in the application have the default windows style. How can I apply the default windows style to the telerik scrollbar?
Tihomir Petkov
Telerik team
 answered on 23 Mar 2010
2 answers
124 views
Hi,

Not sure where's the best place to post this.

We're looking to create a title for a grid that looks like a docking pane's title - that is, using the Outlook 2007 blue theme you get a light blue background and a navy-ish font color. We're looking for something that is themed the same so if we ever change the theme this will change as well.

Any idea how to do this?

Thanks,
yonadav
yonadav
Top achievements
Rank 1
 answered on 23 Mar 2010
4 answers
686 views
Hello

I'm trying to do the following in my c# code:
            Binding binding = new Binding(); 
            binding.Path = new PropertyPath("Image"); 
            binding.Mode = BindingMode.OneWay; 
 
            GridViewDataColumn imgCol = new GridViewDataColumn(); 
            DataTemplate dataTempl = new DataTemplate(); 
            FrameworkElementFactory rectElement = new FrameworkElementFactory(typeof(Rectangle)); 
            rectElement.SetBinding(Rectangle.FillProperty, binding); 
            rectElement.SetValue(Rectangle.WidthProperty, 16.0); 
            rectElement.SetValue(Rectangle.HeightProperty, 16.0); 
            dataTempl.VisualTree = rectElement; 
            imgCol.CellTemplate = dataTempl; 
 
            forGrid.Columns.Insert(0, imgCol); 

Every Row-Object has an "Image"-property which contains a XAML-Vectorgraphic. My target is to create a column for the rowobject which shows the image. I was able to do this with the WPF-Toolkit-DataGrid and was wondering how it would work with the RadGridView.

Any suggestions?

Thank you
NoRyb
NoRyb
Top achievements
Rank 1
 answered on 23 Mar 2010
1 answer
230 views
Hi,

I need to be able to change the left icon in a WPF RadWindow.Alert window. From what I understand this can only be achieved via a theme. Do you have a sample WPF VS2008 or VS2010 project demonstrating this ability?

Thanks heaps.
Miroslav Nedyalkov
Telerik team
 answered on 23 Mar 2010
5 answers
152 views
Hi All

I have created a grid based on the examples where the GroupFooterTemplate is used to show sums etc in the footer of each group.

This works fine if I group at runtime, but if I specify the groups at design time, this binding does not seem to be piking up the grouped totals and nothing is show in the GroupFooterTemplate sections.

I need to be able to configure design time grouping as it is crucial to our application.

Please find the xaml I am using below:
<grid:RadGridView x:Name="radGridViewRaw1" ItemsSource="{Binding collectionRaw}" Margin="0" ShowColumnFooters="True" ShowGroupFooters="True" 
                             AutoGenerateColumns="False" IsReadOnly="True" CanUserFreezeColumns="False"
                         
                        <grid:RadGridView.GroupDescriptors> 
                            <data:GroupDescriptor Member="PressType" /> 
                            <data:GroupDescriptor Member="ProcessWeek" /> 
                        </grid:RadGridView.GroupDescriptors> 
                         
                        <grid:RadGridView.Columns> 
                            <grid:GridViewDataColumn Header="Press Type" DataMemberBinding="{Binding PressType}" /> 
                            <grid:GridViewDataColumn Header="Week" DataMemberBinding="{Binding ProcessWeek}" /> 
 
                            <grid:GridViewDataColumn Width="200" Header="Copies Printed" TextAlignment="Right" DataMemberBinding="{Binding CopiesActual}" DataFormatString="{}{0:c}"
                                <grid:GridViewDataColumn.AggregateFunctions> 
                                    <data:SumFunction Caption="Sum: " ResultFormatString="{}{0:c}" SourceField="CopiesActual" /> 
                                    <data:AverageFunction Caption="Average: " ResultFormatString="{}{0:c}" SourceField="CopiesActual" /> 
                                </grid:GridViewDataColumn.AggregateFunctions> 
                                <grid:GridViewDataColumn.Footer> 
                                    <StackPanel Orientation="Vertical" Margin="5,0"
                                        <TextBlock Text="Custom footer with aggregates:" Margin="0,0,0,2" /> 
                                        <gridView:AggregateResultsList ItemsSource="{Binding}" VerticalAlignment="Center" Grid.Column="4"
                                            <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> 
                                </grid:GridViewDataColumn.Footer> 
                                <grid:GridViewDataColumn.GroupFooterTemplate> 
                                    <DataTemplate> 
 
                                        <StackPanel Orientation="Vertical" Margin="5,0"
                                            <TextBlock Text="Tester:" Margin="0,0,0,2" /> 
                                            <gridView:AggregateResultsList ItemsSource="{Binding}" VerticalAlignment="Center" Grid.Column="4"
                                                <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> 
                                    </DataTemplate> 
 
                                </grid:GridViewDataColumn.GroupFooterTemplate> 
                            </grid:GridViewDataColumn> 
                             
                        </grid:RadGridView.Columns> 
 
                    </grid:RadGridView> 

Pavel Pavlov
Telerik team
 answered on 23 Mar 2010
1 answer
143 views
Hi,

The Navigation bar in Outlook can be collapsed to the left. Does the Telerik RadOutlookBar provide this capability?

None of your samples show this feature.

Thanks heaps.
Kiril Stanoev
Telerik team
 answered on 23 Mar 2010
1 answer
334 views
Hey guys,
I am trying to use a RadComboBox to bind to a Specialized.StringCollection in my User.Settings. I am able to load the ComboBox from the collection, but the twoway binding does not seem to work. Is this possible with just stright XAML binding or do I need to create a whole class to accomodate this? I have the twoway binding working for my Window properties so I do know that I appear to have my ResourceDictionary configured correctly. Below is what I have so far.

XAML
<telerikInput:RadComboBox x:Name="comboTheme" ItemsSource="{Binding Source={StaticResource settings}, Path=Default.Theme}" 
                        SelectedItem="{Binding Default.Theme, Mode=TwoWay}"/> 

App.Config
<userSettings>       
    <EliteExtender.Shell.Properties.Settings> 
      <setting name="MainWidth" serializeAs="String">  
        <value>800</value> 
      </setting> 
      <setting name="MainHeight" serializeAs="String">  
        <value>625</value> 
      </setting> 
      <setting name="MainState" serializeAs="String">  
        <value /> 
      </setting> 
      <setting name="Theme" serializeAs="Xml">  
        <value> 
          <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
            <string>Office_Blue</string> 
            <string>Office_Black</string> 
            <string>Office_Silver</string> 
            <string>Summer</string> 
            <string>Vista</string> 
            <string>Windows7</string> 
          </ArrayOfString> 
        </value> 
      </setting> 
    </EliteExtender.Shell.Properties.Settings> 
  </userSettings> 

ResourceDictionary (registered in App.Xaml)
<ResourceDictionary  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:settings="clr-namespace:EliteExtender.Shell.Properties">  
    <ResourceDictionary.MergedDictionaries> 
        <ResourceDictionary> 
            <settings:Settings x:Key="settings" /> 
        </ResourceDictionary> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

Valeri Hristov
Telerik team
 answered on 23 Mar 2010
1 answer
176 views
i need to extend a RadComboBox which will load bind same data to itself. i dont want to rewrite this data binding code in different forms. so is it possible to extend combo box to bind some data and use it in other places?
Valeri Hristov
Telerik team
 answered on 23 Mar 2010
1 answer
96 views
Is it possible to set a margin for the last and first ticks that appears on the slider?
In the example giving at http://blogs.telerik.com/KirilStanoev/Posts/08-07-24/Using_ValueConverter_to_edit_Slider_s_TickTemplate.aspx?ReturnURL=%2fKirilStanoev%2fPosts.aspx
January and December do not have left and right margins, respectively. I do not want the first and last words to go beyond their ticks. What I want is the letter "J" of January to go right above its tick and so for the letter "R" of December.

I would also like to give the selected tick more visibility when selected. So I was wondering if it is possible to highlight or to maximize the tick when selected.
Kiril Stanoev
Telerik team
 answered on 23 Mar 2010
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
MultiColumnComboBox
SyntaxEditor
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
Bronze
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
Bronze
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?