Grid not showing any Rows

6 posts, 1 answers
  1. ManniAT
    ManniAT avatar
    877 posts
    Member since:
    Nov 2003

    Posted 13 Jul 2013 Link to this post

    Hi,

    I use RadGridView in a MVVM WPF 4.5 application (running on windows 8 if that matters).
    I use the latest internal build 2013.2.708.45 (before I use 617 with the same problem).

    Everything worked fine till I added a user request (MessageBox) in the method which fills the data.
    To reproduce this behavior I made simple app and had to find out that I don't even need the MessageBox to reproduce the problem.

    The problem - RadGridView doesn't display any data until I "force" a redraw, either by changing the window size or by doing a change to the data.
    To proof that my solution works in general I also added a WPF DataGrid - and yes this thing works as expected.

    I simply created a WPF 4.5 application and changed MainWindow.xaml to
    <Window
            xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="RGrid.MainWindow"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="2*" />
                <RowDefinition Height="2*" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
     
            <telerik:RadGridView Grid.Row="0" ItemsSource="{Binding TransferModules}" SelectionMode="Extended" ShowInsertRow="false" CanUserDeleteRows="False" CanUserInsertRows="False" CanUserReorderColumns="False" ShowGroupPanel="False" AutoGenerateColumns="False" >
                <telerik:RadGridView.Columns>
                     
                    <telerik:GridViewDataColumn Header="Modul" DataMemberBinding="{Binding ShortName}" Width="100" IsFilterable="False" IsReadOnly="True" />
                    <telerik:GridViewDataColumn Header="Beschreibung" DataMemberBinding="{Binding Description}" Width="200" IsFilterable="False" IsReadOnly="True" />
                    <telerik:GridViewDataColumn Header="Status" DataMemberBinding="{Binding TransferStatus}" Width="*" IsFilterable="False" IsReadOnly="True" />
                </telerik:RadGridView.Columns>
            </telerik:RadGridView>
            <DataGrid Grid.Row="1" ItemsSource="{Binding TransferModules}" SelectionMode="Extended" CanUserDeleteRows="False" CanUserReorderColumns="False" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Modul"  Binding="{Binding ShortName}" Width="100" IsReadOnly="True" />
                    <DataGridTextColumn Header="Beschreibung" Binding="{Binding Description}" Width="200" IsReadOnly="True" />
                    <DataGridTextColumn Header="Status" Binding="{Binding TransferStatus}" Width="*" IsReadOnly="True" />
                </DataGrid.Columns>
            </DataGrid>
            <Button Grid.Row="2" Click="Button_Click" Content="Add item" HorizontalAlignment="Left" VerticalAlignment="Center" />
        </Grid>
    </Window>


    In code behind I have
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Linq;
    using System.Windows;
     
    namespace RGrid {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window {
            public class TM {
                public String ShortName { get; set; }
                public string Description { get; set; }
                public string TransferStatus { get; set; }
            }
            public ObservableCollection<TM> TransferModules { get; set; }
            private List<TM> _TModules;
            public MainWindow() {
                _TModules = new List<TM>();
                for (int nX = 0; nX < 5; nX++) {
                    _TModules.Add(new TM { Description = "Des " + nX.ToString(), ShortName = "SN" + nX.ToString(), TransferStatus = "OK" });
                }
                //comment the following line to see if it fail without messagebox too
                _TModules[1].TransferStatus = "ERROR";
     
                TransferModules = new ObservableCollection<TM>();
                InitializeComponent();
                Loaded += MainWindow_Loaded;
                DataContext = this;
            }
     
            void MainWindow_Loaded(object sender, RoutedEventArgs e) {
                foreach (TM tM in _TModules) {
                    if (tM.TransferStatus != "OK") {
                        if (MessageBox.Show("Data not OK." + Environment.NewLine + "Add anyways?", "Please confirm", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) != MessageBoxResult.Yes) {
                            continue;
                        }
                    }
                    TransferModules.Add(tM);
                }
            }
     
            private void Button_Click(object sender, RoutedEventArgs e) {
                TransferModules.Add(new TM { Description = "Des ", ShortName = "SN", TransferStatus = "OK" });
            }
        }
    }


    When I start the application the RadGridView shows no rows.
    If I add a new row (with the button at the bottom) the data shows up as expected. The same happens if I change the window size.

    Manfred
  2. Answer
    Yordanka
    Admin
    Yordanka avatar
    634 posts

    Posted 15 Jul 2013 Link to this post

    Hi Manfred,

    Thank you for the feedback.

    I was able to reproduce the problem and we will investigate it further. I will contact you as soon as we have more information.
    As a workaround you can set RadGridView.GroupRenderMode="Flat" and your scenario will work as expected. Please let me know if you have additional questions.
     
    Regards,
    Yordanka
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WPF.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
  3. UI for WPF is Visual Studio 2017 Ready
  4. ManniAT
    ManniAT avatar
    877 posts
    Member since:
    Nov 2003

    Posted 15 Jul 2013 Link to this post

    Hi Yordanka,

    thank you for the (as always with telerik) fast and helpful answer.
    I hope you updated my telerik points :)

    Regards
    Manfred
  5. Yordanka
    Admin
    Yordanka avatar
    634 posts

    Posted 16 Jul 2013 Link to this post

    Hi Manfred,

    I've updated your Telerik points. Thank you for the valuable feedback.
     
    Regards,
    Yordanka
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WPF.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
  6. Vuqar
    Vuqar avatar
    1 posts
    Member since:
    Jan 2013

    Posted 15 Jan Link to this post

    Hi, I have same issue when changing databound item in the CellEditEnded event. sample code

    private void RadGridView_singleServices_CellEditEnded(object sender, GridViewCellEditEndedEventArgs e)
            {
                try
                {
                    if (e.Cell.Column.UniqueName == "ExpanceId")
                    {
                        MessageBoxResult res = MessageBox.Show("Would you ....?", "Request", MessageBoxButton.YesNo, MessageBoxImage.Warning);
                        DataRowView drv = (DataRowView)((GridViewRowItem)e.Cell.ParentRow).DataContext;
                        if (res == MessageBoxResult.Yes)
                        {
                            RadGridView_singleServices.Items.EditItem(this.RadGridView_singleServices.CurrentItem);
                            InCard.HotelDataSet.SingleServicesRow cr = (InCard.HotelDataSet.SingleServicesRow)drv.Row;
                            Int32 expID = cr.ExpanceId;
                            var expns = from c in hotelDataSet.Expances
                                        where (c.ExpanceId == expID)
                                        select c;
     
                            var results = from ex in hotelDataSet.Expances
                                          join cd in hotelDataSet.CashDesks
                                          on ex.ExpCashDeskGUID equals cd.CashDeskGUID
                                          join or in hotelDataSet.Organization on cd.OrgGUID equals or.OrgGUID
                                          join cur in hotelDataSet.Currency on or.MainCurrency equals cur.CurrencyID
                                          where ex.ExpanceId == expID
                                          select new { CashDeskID = cd.CashDeskID, MainCurrencyID = or.MainCurrency, CurrentRate = cur.CurrentRate, DefaultSum = ex.DefaultSum };
     
                            foreach (var v in results)
                            {
                                drv.BeginEdit();
                                cr.PaymentID = 1;//need find first
                                cr.PaymSum = v.DefaultSum;
                                cr.CurrencyID = v.MainCurrencyID;
                                cr.CurrentRate = v.CurrentRate;
                                cr.WorkerUserID = LibMyCommon.CurrentUser().id;
                                cr.CashDeskID = v.CashDeskID;
                                drv.EndEdit();
                                return;
                            }
     
                        }
                    }
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + " in RadGridView_singleServices_CellEditEnded");
                }
            }

    All changes applied, but not shown until resize window, and set GroupRenderMode="Flat" is not working for me.

  7. Petya
    Admin
    Petya avatar
    975 posts

    Posted 20 Jan Link to this post

    Hello Vuqar,

    I'm a bit confused about the end result that you're trying to achieve. Could you elaborate a bit, please? If you can simplify the scenario in a sample project and send it over through a support ticket that would be ideal.

    What comes to mind is that binding RadGridView when using DataTable should always be done to the DefaultView of that table in order to use the INotifyPropertyChanged and INotifyCollectionChanged support. Is that the case on your end?

    Please also specify the exact version of Telerik UI for WPF which you're using.

    Regards,
    Petya
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top
UI for WPF is Visual Studio 2017 Ready