This is a migrated thread and some comments may be shown as answers.

RadGridView Hierarchical 3 Levels

5 Answers 205 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
Benedikt asked on 22 Mar 2021, 08:19 AM

Hi guys,

 

I am currently working on a way to display data, that is structured on 3 levels.
On first level is a week, on second level a day, and on the third level a basic entry.

Based on that system I thought about the RadGridView and the Child-Relations.
My main problems now are, that I have especially on the third level way too less space in the child-table so its basically unreadable. 
Is there any way to give the childtables more space? 

The other problem is, that I haven't found out, how I could set different Templates for the childtables.
The HierarchyChildTemplate only works for one Child as it seems.

 

The reason why I not just Group by the Days and weeks is, that I later want to use Drag and Drop entries between the days. 
I thought this would be more possible in a hierarchical system.

 

I also tested the RadPanelBar, but there I would need to create somethin like a table with frozen headers and so on manually.

 

Greetings,

Benedikt

5 Answers, 1 is accepted

Sort by
0
Accepted
Dilyan Traykov
Telerik team
answered on 24 Mar 2021, 10:19 AM

Hi Benedikt,

You can set properties on the child grids (such as paddings and margins to reduce the used space) by either handling the DataLoading event or specifying a HierarchyChildTemplate as explained in this article. You can have one template for the 2nd-level grids and in that template specify another template that will be applied for the 3rd level grids.

Please let me know if this works for you or if you need any assistance with the exact implementation at your end.

Regards,
Dilyan Traykov
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

0
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
answered on 29 Mar 2021, 08:05 AM

Hi Dilyan,

works as you wrote, haven't thought of creating a Childteamplate in my Childtemplate.

 

But now I encounter new problems.
I will try a few things out now. Maybe I'll come back withe new problems later. :D 

0
Dilyan Traykov
Telerik team
answered on 29 Mar 2021, 02:05 PM

Hi Benedikt,

I'm glad to hear that you found my suggestion helpful. Do let me know if I can help you in resolving the issues you come across.

Regards,
Dilyan Traykov
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

0
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
answered on 30 Mar 2021, 06:23 AM

Hi Dilyan,

thanks for the offer.

So my main problem is the low performance as soon as I expand the second level.
It takes enormous time to expand and after expansion scrolling is also performing very low. 

I understand that it's slow if I don't set a height to the child grids, but even set heights aren't much better.
I know from other projects I made, that published it was better, here it isn't.
I have the GridViewCellCoreStyle active in the resources, also not getting much performance.
I don't set the Core Row-Style cause I want the Row-Indicator.

I do also know, that if I use fixed column-widths it gets faster, so I trried to implementa PersistenceManager to let the user save and load his settings. But I am not able to save it for the childgrids.
Maybe, because each expansion creats a new grid, so it's not even possible?

Also if I scroll in the child, the column-header should stay visible, but it gets scolled out of visible range.

 

I guess my main problem os the table on the third level. Even in a solo grid with only that data the load takes much longer then I'm used to from other projects. And I don't get why... 

The data is already loaded, everything in the code is done, but the rendering in the UI takes 2 seconds. I know not that big, but it just feels bad and I can't show a busy-indicator because only the UI works.

 

Is there something I'm doing wrong I oversee?

<telerik:RadGridView
    x:Name="rgvLoseLoseSpezialsicht"
    Grid.Column="1"
    GroupRenderMode="Flat"
    ShowGroupPanel="False"
    ShowSearchPanel="False"
    CanUserSearch="False"
    IsSynchronizedWithCurrentItem="True"
    AutoGenerateColumns="False"
    IsReadOnly="True"
    ItemsSource="{Binding Lose}"
    SelectionMode="Extended"
    AlternationCount="2"
    >
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KritischerAuftrag}"
            Header="Kritischer Auftrag"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding VertriebsBereich}"
            Header="Vertriebs-Bereich"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Jahr}"
            Header="Jahr"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding LfdNr}"
            Header="LfdNr"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding TA}"
            Header="TA"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Gebiet}"
            Header="Gebiet"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ObjektAnschrift}"
            Header="Anschrift"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ObjektOrt}"
            Header="Ort"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Los}"
            Header="Los"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Mappe}"
            Header="Mappe"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ProduktTyp}"
            Header="Produkt-Typ"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AE, StringFormat=dd.MM}"
            Header="AE"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AMInAV, StringFormat=dd.MM}"
            Header="AM in AV"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AMBearbeitet, StringFormat=dd.MM}"
            Header="AM bearbeitet"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ABFertig, StringFormat=dd.MM}"
            Header="AB Fertig"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MappeFertigAV, StringFormat=dd.MM}"
            Header="Mappe fertig AV"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MappeImWerk, StringFormat=dd.MM}"
            Header="Mappe im Werk"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Gegenbestätigung}"
            Header="Gegenbestätigung"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Vorfertigungstermin, StringFormat=dd.MM.yy}"
            Header="Vorfertigungstermin"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding LetzterLiefertermin, StringFormat=dd.MM.yy}"
            Header="Letzter Liefertermin"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Endtermin, StringFormat=dd.MM.yy}"
            Header="Endtermin"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Ladetag, StringFormat=dd.MM.yy}"
            Header="Ladetag"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AbholtagSoll, StringFormat=dd.MM.yy}"
            Header="Abholtag Soll"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KundenwunschKWJahr}"
            Header="Kundenwunsch KW/Jahr"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding FertigmeldDat, StringFormat=dd.MM.yy}"
            Header="Fertigmelde Datum"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Profilfarbe}"
            Header="Profilfarbe"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Zellen, StringFormat=N0}"
            Header="Zellen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ME, StringFormat=N0}"
            Header="ME"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Fertigungswert, StringFormat=N0}"
            Header="Fertigungswert"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MontageGroßobjekt}"
            Header="Montage Großobjekt"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding OhneMontage}"
            Header="Ohne Montage"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Projektierer}"
            Header="Projektierer"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding PrioritätAV}"
            Header="Priorität AV"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BearbeiterAV}"
            Header="Bearbeiter AV"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KEMx}"
            Header="KEMx"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KommentarVorhanden}"
            Header="Kommentar"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AvisierungVorhanden}"
            Header="Avisierung"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding ProdukteAuftrag}"
            Header="Produkte Auftrag"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Direktanlieferung}"
            Header="Direktanlieferung"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding TrennwändeAnlagenmerkmal}"
            Header="Trennwände Anlagenmerkmal"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding TrennwändeProfilausbildung}"
            Header="Trennwände Profilausbildung"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Einzelteile, StringFormat=N0}"
            Header="Möbel Einzelteile"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MöbelSchwierigkeit}"
            Header="Möbel Schwierigkeit"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MöbelProduktausprägung}"
            Header="Möbel Produktausprägung"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding WEinfach, StringFormat=N0}"
            Header="W einfach"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding WTHPL, StringFormat=N0}"
            Header="WT - HPL"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BZPL, StringFormat=N0}"
            Header="BZPL"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding MöbelRegale, StringFormat=N0}"
            Header="Möbel/Regale"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BeckenBecher, StringFormat=N0}"
            Header="Becken/Becher"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Spiegelfräsungen, StringFormat=N0}"
            Header="Spiegelfräsungen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BüromöbelSpan, StringFormat=N0}"
            Header="Büromöbel Span"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AluBlechteile, StringFormat=N0}"
            Header="Alu-/Blechteile"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BüromöbelSpan, StringFormat=N0}"
            Header="Büromöbel Span"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AufwandEM, StringFormat=N0}"
            Header="Aufwand EM in h"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding AufwandBAZ, StringFormat=N0}"
            Header="Aufwand BAZ in h"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BAZBeckenBecher, StringFormat=N0}"
            Header="BAZ, Becken/Becher"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding EMBeckenBecher, StringFormat=N0}"
            Header="EM, Becken/Becher"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BAZSpiegelfräsungen, StringFormat=N0}"
            Header="BAZ, Spiegelfräsungen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding EMSpiegelfräsungen, StringFormat=N0}"
            Header="EM, Spiegelfräsungen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSTüren, StringFormat=N0}"
            Header="Schränke R/S Türen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSTürMaterial}"
            Header="Schränke R/S Tür-Material"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSFE, StringFormat=N0}"
            Header="Schränke R/S FE"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Korpusse3er, StringFormat=N0}"
            Header="Korpusse 3er"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSArt3er}"
            Header="3er Art"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Korpusse2er, StringFormat=N0}"
            Header="Korpusse 2er"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSArt2er}"
            Header="2er Art"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Korpusse1er, StringFormat=N0}"
            Header="Korpusse 1er"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeRSArt1er}"
            Header="1er Art"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeIXOSTüren, StringFormat=N0}"
            Header="Schränke IXOS Türen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeIXOSTürMaterial}"
            Header="Schränke IXOS Tür-Material"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding SchränkeIXOSFE, StringFormat=N0}"
            Header="Schränke IXOS FE"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding einteiligeSchränke, StringFormat=N0}"
            Header="einteilige Schränke"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding mehrteiligeSchränke, StringFormat=N0}"
            Header="mehrteilige Schränke"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Sonderschränke, StringFormat=N0}"
            Header="Sonderschränke"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding BänkeFE, StringFormat=N0}"
            Header="Bänke FE"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Bohlen}"
            Header="Bohlen"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3000, StringFormat=N0}"
            Header="Modell 3000"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3010, StringFormat=N0}"
            Header="Modell 3010"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3100, StringFormat=N0}"
            Header="Modell 3100"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3500, StringFormat=N0}"
            Header="Modell 3500"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3600, StringFormat=N0}"
            Header="Modell 3600"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3700, StringFormat=N0}"
            Header="Modell 3700"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell3800, StringFormat=N0}"
            Header="Modell 3800"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell5100, StringFormat=N0}"
            Header="Modell 5100"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Modell5200, StringFormat=N0}"
            Header="Modell 5200"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Hakenl1010, StringFormat=N0}"
            Header="Hakenl. 1010"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KSBkl1100, StringFormat=N0}"
            Header="KSB < 1100"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding KSBgr1100, StringFormat=N0}"
            Header="KSB > 1100"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding UBZoOBZ, StringFormat=N0}"
            Header="UBZ/OBZ"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding vorgebaute, StringFormat=N0}"
            Header="vorgebaute"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding Formteile, StringFormat=N0}"
            Header="Formteile"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
        <telerik:GridViewDataColumn
            DataMemberBinding="{Binding HakenleistenGesamt, StringFormat=N0}"
            Header="Hakenleisten Gesamt"
            HeaderTextWrapping="Wrap"
            TextWrapping="Wrap"
            />
    </telerik:RadGridView.Columns>
</telerik:RadGridView>

 

public class clsLosSpezialsicht : clsBaseViewModel
{
    #region Properties
 
    public int JahrKW { get; set; }
 
    public int ID { get; set; }
    public int AuftragsID { get; set; }
 
    public int Jahr { get; set; }
    public int LfdNr { get; set; }
    public int TA { get; set; }
 
    public int? Gebiet { get; set; }
 
    public string ObjektAnschrift { get; set; }
    public string ObjektPLZ { get; set; }
    public string ObjektOrt { get; set; }
    public string ObjektStraße { get; set; }
    public string ObjektLand { get; set; }
 
    public int? Los { get; set; }
    public int? Mappe { get; set; }
 
    public int ProduktTypID { get; set; }
    public string ProduktTyp { get; set; }
    public int ProduktGruppenID { get; set; }
    public bool ProduktGruppeAktiv { get; set; }
    public int ProduktGruppenArtID { get; set; }
 
    public DateTime? AE { get; set; }
    public DateTime? AMInAV { get; set; }
    public DateTime? AMBearbeitet { get; set; }
    public DateTime? ABFertig { get; set; }
    public DateTime? MappeFertigAV { get; set; }
    public DateTime? MappeImWerk { get; set; }
 
    public bool Gegenbestätigung { get; set; }
 
    public DateTime? Vorfertigungstermin { get; set; }
    public DateTime? Endtermin { get; set; }
    public DateTime? Ladetag { get; set; }
 
    public int? KundenwunschKW { get; set; }
    public int? KundenwunschJahr { get; set; }
    public string KundenwunschKWJahr
    {
        get
        {
            if (KundenwunschJahr.HasValue | KundenwunschKW.HasValue)
            {
                return KundenwunschKW.ToString() + "/" + KundenwunschJahr.ToString();
            }
            return null;
        }
    }
 
    public int? ProfilfarbeID { get; set; }
    public int? ProfilfarbeFarbnummer { get; set; }
    public string ProfilfarbeFarbname { get; set; }
    public string Profilfarbe
    {
        get
        {
            if (ProfilfarbeID.HasValue)
            {
                return ProfilfarbeFarbnummer.ToString() + " " + ProfilfarbeFarbname.ToString();
            }
            return null;
        }
    }
 
    public decimal Zellen { get; set; }
    public decimal ME { get; set; }
    public decimal Fertigungswert { get; set; }
 
    public bool MontageGroßobjekt { get; set; }
    public bool OhneMontage { get; set; }
 
    public int? ProjektiererID { get; set; }
    public string ProjektiererNachname { get; set; }
    public string ProjektiererVorname { get; set; }
    public string Projektierer
    {
        get
        {
            if (ProjektiererNachname != null && ProjektiererVorname != null)
            {
                return ProjektiererNachname.ToString() + ", " + ProjektiererVorname.ToString();
            }
            return null;
        }
    }
 
    public int? PrioritätAV { get; set; }
 
    public int? BearbeiterAVID { get; set; }
    public string BearbeiterAVNachname { get; set; }
    public string BearbeiterAVVorname { get; set; }
    public string BearbeiterAV
    {
        get
        {
            if (BearbeiterAVID.HasValue)
            {
                return BearbeiterAVNachname.ToString() + ", " + BearbeiterAVVorname.ToString();
            }
            return null;
        }
    }
 
    public bool KEMx { get; set; }
 
    public bool KommentarVorhandenLos { get; set; }
    public bool KommentarVorhandenAuftrag { get; set; }
    public bool KommentarVorhanden
    {
        get
        {
            if (KommentarVorhandenLos | KommentarVorhandenAuftrag)
            {
                return true;
            }
            return false;
        }
    }
 
    public bool AvisierungVorhanden { get; set; }
 
    public string ProdukteAuftrag { get; set; }
 
    public bool Direktanlieferung { get; set; }
 
    public int? TrennwändeAnlagenmerkmalID { get; set; }
    public string TrennwändeAnlagenmerkmal { get; set; }
    public int? TrennwändeProfilausbildungID { get; set; }
    public string TrennwändeProfilausbildung { get; set; }
 
    public decimal Einzelteile { get; set; }
    public int? MöbelSchwierigkeitID { get; set; }
    public int? MöbelSchwierigkeit { get; set; }
    public int? MöbelProduktausprägungID { get; set; }
    public string MöbelProduktausprägung { get; set; }
    public decimal WEinfach { get; set; }
    public decimal WTHPL { get; set; }
    public decimal BZPL { get; set; }
    public decimal MöbelRegale { get; set; }
    public decimal BeckenBecher { get; set; }
    public decimal Spiegelfräsungen { get; set; }
    public decimal BüromöbelSpan { get; set; }
    public decimal AluBlechteile { get; set; }
    public decimal AufwandEM { get; set; }
    public decimal AufwandBAZ { get; set; }
    public decimal BAZBeckenBecher { get; set; }
    public decimal EMBeckenBecher { get; set; }
    public decimal BAZSpiegelfräsungen { get; set; }
    public decimal EMSpiegelfräsungen { get; set; }
 
    public decimal SchränkeRSTüren { get; set; }
    public decimal Korpusse3er { get; set; }
    public int? SchränkeRSArtID3er { get; set; }
    public string SchränkeRSArt3er { get; set; }
    public decimal Korpusse2er { get; set; }
    public int? SchränkeRSArtID2er { get; set; }
    public string SchränkeRSArt2er { get; set; }
    public decimal Korpusse1er { get; set; }
    public int? SchränkeRSArtID1er { get; set; }
    public string SchränkeRSArt1er { get; set; }
    public decimal SchränkeRSFE { get; set; }
    public int? SchränkeRSTürMaterialID { get; set; }
    public string SchränkeRSTürMaterial { get; set; }
 
    public decimal einteiligeSchränke { get; set; }
    public decimal mehrteiligeSchränke { get; set; }
    public decimal Sonderschränke { get; set; }
    public decimal SchränkeIXOSTüren { get; set; }
    public decimal SchränkeIXOSFE { get; set; }
    public int? SchränkeIXOSTürMaterialID { get; set; }
    public string SchränkeIXOSTürMaterial { get; set; }
 
    public bool Bohlen { get; set; }
    public decimal Modell3000 { get; set; }
    public decimal Modell3010 { get; set; }
    public decimal Modell3100 { get; set; }
    public decimal Modell3500 { get; set; }
    public decimal Modell3600 { get; set; }
    public decimal Modell3700 { get; set; }
    public decimal Modell3800 { get; set; }
    public decimal Modell5100 { get; set; }
    public decimal Modell5200 { get; set; }
    public decimal Hakenl1010 { get; set; }
    public decimal KSBkl1100 { get; set; }
    public decimal KSBgr1100 { get; set; }
    public decimal UBZoOBZ { get; set; }
    public decimal vorgebaute { get; set; }
    public decimal Formteile { get; set; }
    public decimal BänkeFE { get; set; }
    public decimal HakenleistenGesamt { get; set; }
 
    public DateTime? LetzterLieferterminBestellungenEintrag { get; set; }
    public DateTime? ManuellerLiefertermin { get; set; }
    public DateTime? LetzterLieferterminBestellungen { get; set; }
    public DateTime? LetzterLiefertermin
    {
        get
        {
            if (ManuellerLiefertermin.HasValue)
            {
                if (LetzterLieferterminBestellungenEintrag.HasValue)
                {
                    if (ManuellerLiefertermin > LetzterLieferterminBestellungenEintrag)
                    {
                        return ManuellerLiefertermin;
                    }
                    else
                    {
                        return LetzterLieferterminBestellungenEintrag;
                    }
                }
                else
                {
                    return ManuellerLiefertermin;
                }
            }
            else
            {
                return LetzterLieferterminBestellungenEintrag;
            }
        }
    }
 
    public DateTime? FertigmeldDat { get; set; }
 
    public DateTime? AbholtagSoll { get; set; }
 
    public bool KritischerAuftrag { get; set; }
 
    public int VertriebsBereichID { get; set; }
    public string VertriebsBereich { get; set; }
 
    #endregion
 
    #region Constructor
 
    public clsLosSpezialsicht(DataRow dr)
    {
        JahrKW = (int)dr["JahrKW"];
 
        ID = (int)dr["ID"];
        AuftragsID = (int)dr["AuftragsID"];
 
        Jahr = (int)dr["Jahr"];
        LfdNr = (int)dr["LfdNr"];
        TA = (int)dr["TA"];
 
        Gebiet = dr["Gebiet"] == DBNull.Value ? null : (int?)dr["Gebiet"];
 
        ObjektAnschrift = dr["ObjektAnschrift"] == DBNull.Value ? null : (string)dr["ObjektAnschrift"];
        ObjektPLZ = dr["ObjektPLZ"] == DBNull.Value ? null : (string)dr["ObjektPLZ"];
        ObjektOrt = dr["ObjektOrt"] == DBNull.Value ? null : (string)dr["ObjektOrt"];
        ObjektStraße = dr["ObjektStraße"] == DBNull.Value ? null : (string)dr["ObjektStraße"];
        ObjektLand = dr["ObjektLand"] == DBNull.Value ? null : (string)dr["ObjektLand"];
 
        Los = dr["Los"] == DBNull.Value ? null : (int?)dr["Los"];
        Mappe = dr["Mappe"] == DBNull.Value ? null : (int?)dr["Mappe"];
 
        ProduktTypID = (int)dr["ProduktTypID"];
        ProduktTyp = (string)dr["ProduktTyp"];
        ProduktGruppenID = (int)dr["ProduktGruppenID"];
        ProduktGruppeAktiv = (bool)dr["ProduktGruppeAktiv"];
        ProduktGruppenArtID = (int)dr["ProduktGruppenArtID"];
 
        AE = dr["AE"] == DBNull.Value ? null : (DateTime?)dr["AE"];
        AMInAV = dr["AMInAV"] == DBNull.Value ? null : (DateTime?)dr["AMInAV"];
        AMBearbeitet = dr["AMBearbeitet"] == DBNull.Value ? null : (DateTime?)dr["AMBearbeitet"];
        ABFertig = dr["ABFertig"] == DBNull.Value ? null : (DateTime?)dr["ABFertig"];
        MappeFertigAV = dr["MappeFertigAV"] == DBNull.Value ? null : (DateTime?)dr["MappeFertigAV"];
        MappeImWerk = dr["MappeImWerk"] == DBNull.Value ? null : (DateTime?)dr["MappeImWerk"];
 
        Gegenbestätigung = (bool)dr["Gegenbestätigung"];
 
        Vorfertigungstermin = dr["Vorfertigungstermin"] == DBNull.Value ? null : (DateTime?)dr["Vorfertigungstermin"];
        Endtermin = dr["Endtermin"] == DBNull.Value ? null : (DateTime?)dr["Endtermin"];
        Ladetag = dr["Ladetag"] == DBNull.Value ? null : (DateTime?)dr["Ladetag"];
 
        KundenwunschKW = dr["KundenwunschKW"] == DBNull.Value ? null : (int?)dr["KundenwunschKW"];
        KundenwunschJahr = dr["KundenwunschJahr"] == DBNull.Value ? null : (int?)dr["KundenwunschJahr"];
 
        ProfilfarbeID = dr["ProfilfarbeID"] == DBNull.Value ? null : (int?)dr["ProfilfarbeID"];
        ProfilfarbeFarbnummer = dr["ProfilfarbeFarbnummer"] == DBNull.Value ? null : (int?)dr["ProfilfarbeFarbnummer"];
        ProfilfarbeFarbname = dr["ProfilfarbeFarbname"] == DBNull.Value ? null : (string)dr["ProfilfarbeFarbname"];
 
        Zellen = (decimal)dr["Zellen"];
        ME = (decimal)dr["ME"];
        Fertigungswert = (decimal)dr["Fertigungswert"];
 
        MontageGroßobjekt = (bool)dr["MontageGroßobjekt"];
        OhneMontage = (bool)dr["OhneMontage"];
 
        ProjektiererID = dr["ProjektiererID"] == DBNull.Value ? null : (int?)dr["ProjektiererID"];
        ProjektiererNachname = dr["ProjektiererNachname"] == DBNull.Value ? null : (string)dr["ProjektiererNachname"];
        ProjektiererVorname = dr["ProjektiererVorname"] == DBNull.Value ? null : (string)dr["ProjektiererVorname"];
 
        PrioritätAV = dr["PrioritätAV"] == DBNull.Value ? null : (int?)dr["PrioritätAV"];
 
        BearbeiterAVID = dr["BearbeiterAVID"] == DBNull.Value ? null : (int?)dr["BearbeiterAVID"];
        BearbeiterAVNachname = dr["BearbeiterAVNachname"] == DBNull.Value ? null : (string)dr["BearbeiterAVNachname"];
        BearbeiterAVVorname = dr["BearbeiterAVVorname"] == DBNull.Value ? null : (string)dr["BearbeiterAVVorname"];
 
        KEMx = (bool)dr["KEMx"];
 
        KommentarVorhandenLos = (bool)dr["KommentarVorhandenLos"];
        KommentarVorhandenAuftrag = (bool)dr["KommentarVorhandenAuftrag"];
 
        AvisierungVorhanden = (bool)dr["AvisierungVorhanden"];
 
        ProdukteAuftrag = dr["ProdukteAuftrag"] == DBNull.Value ? null : (string)dr["ProdukteAuftrag"];
 
        Direktanlieferung = (bool)dr["Direktanlieferung"];
 
        #region Trennwände
 
        if (ProduktGruppenArtID == 1)
        {
            TrennwändeAnlagenmerkmalID = (int?)dr["TrennwändeAnlagenmerkmalID"];
            TrennwändeAnlagenmerkmal = (string)dr["TrennwändeAnlagenmerkmal"];
 
            TrennwändeProfilausbildungID = (int?)dr["TrennwändeProfilausbildungID"];
            TrennwändeProfilausbildung = (string)dr["TrennwändeProfilausbildung"];
        }
 
        #endregion
 
        #region Möbel
 
        else if (ProduktGruppenArtID == 2)
        {
            WEinfach = Convert.ToDecimal(dr["WEinfach"]);
            WTHPL = Convert.ToDecimal(dr["WTHPL"]);
            BZPL = Convert.ToDecimal(dr["BZPL"]);
            MöbelRegale = Convert.ToDecimal(dr["MöbelRegale"]);
            BeckenBecher = Convert.ToDecimal(dr["BeckenBecher"]);
            Spiegelfräsungen = Convert.ToDecimal(dr["Spiegelfräsungen"]);
            BüromöbelSpan = Convert.ToDecimal(dr["BüromöbelSpan"]);
            AluBlechteile = Convert.ToDecimal(dr["AluBlechteile"]);
 
            Einzelteile = Convert.ToDecimal(dr["Einzelteile"]);
 
            MöbelSchwierigkeitID = dr["MöbelSchwierigkeitID"] == DBNull.Value ? null : (int?)dr["MöbelSchwierigkeitID"];
            MöbelSchwierigkeit = dr["MöbelSchwierigkeit"] == DBNull.Value ? null : (int?)dr["MöbelSchwierigkeit"];
 
            MöbelProduktausprägungID = dr["MöbelProduktausprägungID"] == DBNull.Value ? null : (int?)dr["MöbelProduktausprägungID"];
            MöbelProduktausprägung = dr["MöbelProduktausprägung"] == DBNull.Value ? null : (string)dr["MöbelProduktausprägung"];
 
            AufwandEM = Convert.ToDecimal(dr["AufwandEM"]);
            AufwandBAZ = Convert.ToDecimal(dr["AufwandBAZ"]);
            BAZBeckenBecher = Convert.ToDecimal(dr["BAZBeckenBecher"]);
            EMBeckenBecher = Convert.ToDecimal(dr["EMBeckenBecher"]);
            BAZSpiegelfräsungen = Convert.ToDecimal(dr["BAZSpiegelfräsungen"]);
            EMSpiegelfräsungen = Convert.ToDecimal(dr["EMSpiegelfräsungen"]);
        }
 
        #endregion
 
        #region SchränkeRS
 
        else if (ProduktGruppenArtID == 3)
        {
            Korpusse3er = Convert.ToDecimal(dr["Korpusse3er"]);
            Korpusse2er = Convert.ToDecimal(dr["Korpusse2er"]);
            Korpusse1er = Convert.ToDecimal(dr["Korpusse1er"]);
 
            SchränkeRSArtID3er = dr["SchränkeRSArtID3er"] == DBNull.Value ? null : (int?)dr["SchränkeRSArtID3er"];
            SchränkeRSArt3er = dr["SchränkeRSArt3er"] == DBNull.Value ? null : (string)dr["SchränkeRSArt3er"];
 
            SchränkeRSArtID2er = dr["SchränkeRSArtID2er"] == DBNull.Value ? null : (int?)dr["SchränkeRSArtID2er"];
            SchränkeRSArt2er = dr["SchränkeRSArt2er"] == DBNull.Value ? null : (string)dr["SchränkeRSArt2er"];
 
            SchränkeRSArtID1er = dr["SchränkeRSArtID1er"] == DBNull.Value ? null : (int?)dr["SchränkeRSArtID1er"];
            SchränkeRSArt1er = dr["SchränkeRSArt1er"] == DBNull.Value ? null : (string)dr["SchränkeRSArt1er"];
 
            SchränkeRSFE = Convert.ToDecimal(dr["SchränkeRSFE"]);
            SchränkeRSTüren = Convert.ToDecimal(dr["SchränkeRSTüren"]);
 
            SchränkeRSTürMaterialID = dr["SchränkeRSTürMaterialID"] == DBNull.Value ? null : (int?)dr["SchränkeRSTürMaterialID"];
            SchränkeRSTürMaterial = dr["SchränkeRSTürMaterial"] == DBNull.Value ? null : (string)dr["SchränkeRSTürMaterial"];
        }
 
        #endregion
 
        #region SchränkeIXOS
 
        else if (ProduktGruppenArtID == 4)
        {
            einteiligeSchränke = Convert.ToDecimal(dr["einteiligeSchränke"]);
            mehrteiligeSchränke = Convert.ToDecimal(dr["mehrteiligeSchränke"]);
            Sonderschränke = Convert.ToDecimal(dr["Sonderschränke"]);
 
            SchränkeIXOSFE = Convert.ToDecimal(dr["SchränkeIXOSFE"]);
            SchränkeIXOSTüren = Convert.ToDecimal(dr["SchränkeIXOSTüren"]);
 
            SchränkeIXOSTürMaterialID = dr["SchränkeIXOSTürMaterialID"] == DBNull.Value ? null : (int?)dr["SchränkeIXOSTürMaterialID"];
            SchränkeIXOSTürMaterial = dr["SchränkeIXOSTürMaterial"] == DBNull.Value ? null : (string)dr["SchränkeIXOSTürMaterial"];
        }
 
        #endregion
 
        #region Bänke
 
        else if (ProduktGruppenArtID == 5)
        {
            Modell3000 = Convert.ToDecimal(dr["Modell3000"]);
            Modell3010 = Convert.ToDecimal(dr["Modell3010"]);
            Modell3100 = Convert.ToDecimal(dr["Modell3100"]);
            Modell3500 = Convert.ToDecimal(dr["Modell3500"]);
            Modell3600 = Convert.ToDecimal(dr["Modell3600"]);
            Modell3700 = Convert.ToDecimal(dr["Modell3700"]);
            Modell5100 = Convert.ToDecimal(dr["Modell5100"]);
            Hakenl1010 = Convert.ToDecimal(dr["Hakenl1010"]);
            KSBgr1100 = Convert.ToDecimal(dr["KSBgr1100"]);
            KSBkl1100 = Convert.ToDecimal(dr["KSBkl1100"]);
            vorgebaute = Convert.ToDecimal(dr["vorgebaute"]);
            Formteile = Convert.ToDecimal(dr["Formteile"]);
            Bohlen = (bool)dr["Bohlen"];
            UBZoOBZ = Convert.ToDecimal(dr["UBZoOBZ"]);
            Modell3800 = Convert.ToDecimal(dr["Modell3800"]);
            Modell5200 = Convert.ToDecimal(dr["Modell5200"]);
            BänkeFE = Convert.ToDecimal(dr["BänkeFE"]);
            HakenleistenGesamt = Convert.ToDecimal(dr["HakenleistenGesamt"]);
        }
 
        #endregion
 
        LetzterLieferterminBestellungenEintrag = dr["LetzterLieferterminBestellungenEintrag"] == DBNull.Value ? null : (DateTime?)dr["LetzterLieferterminBestellungenEintrag"];
        ManuellerLiefertermin = dr["ManuellerLiefertermin"] == DBNull.Value ? null : (DateTime?)dr["ManuellerLiefertermin"];
        LetzterLieferterminBestellungen = dr["LetzterLieferterminBestellungen"] == DBNull.Value ? null : (DateTime?)dr["LetzterLieferterminBestellungen"];
 
        FertigmeldDat = dr["FertigmeldDat"] == DBNull.Value ? null : (DateTime?)dr["FertigmeldDat"];
 
        AbholtagSoll = dr["AbholtagSoll"] == DBNull.Value ? null : (DateTime?)dr["AbholtagSoll"];
 
        KritischerAuftrag = (bool)dr["KritischerAuftrag"];
 
        VertriebsBereichID = (int)dr["VertriebsBereichID"];
        VertriebsBereich = (string)dr["VertriebsBereich"];
    }
 
    #endregion
}

 

        public ObservableCollection<clsLosSpezialsicht> Lose { get; set; }

0
Dilyan Traykov
Telerik team
answered on 01 Apr 2021, 02:49 PM

Hi Benedikt,

Thank you for the provided image and code snippets.

Based on your setup, the two main optimizations I can offer are to:

1) Use the GridViewRowCoreStyle on the bottom-level RadGridView if its items will not have any children. You can define the style in the Resources collection of the bottom-level HierarchyChildTemplate.

2) Set the MaxHeight and MaxWidth properties of the child grids as, by default, they're measured with infinity and UI virtualization will be turned off, which means that all of their cells will be rendered which in this particular case due to the big number of columns is a considerable amount.

You can also go over the Tips and Tricks article if you have not done so already to see if any of the proposed optimizations also work for you.

If the results you observe are still not satisfactory, I can only suggest that you send over a sample project which I will then profile at my end to investigate why the degraded performance is observed. You can do so in a separate support ticket so that you do not share any sensitive data in the forums.

Please let me know how this goes.

Regards,
Dilyan Traykov
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

Tags
GridView
Asked by
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
Answers by
Dilyan Traykov
Telerik team
Benedikt
Top achievements
Rank 3
Iron
Iron
Iron
Share this question
or