Use First Look Example With Objects

8 posts, 1 answers
  1. StevenDale
    StevenDale avatar
    100 posts
    Member since:
    Apr 2007

    Posted 07 May 2009 Link to this post

    Is it possible to use the first look example with objects?

    I have a list of objectA and each object has 3 sublists. I want to display each sublist in a tab when the parent record is expanded, similar to the first look example provided.

    I have managed a workaround by modifying the Custom Row Layout example and using an expander but it is not as clean as the First Look Example.

    Thanks,

    Billy Jacobs
  2. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 08 May 2009 Link to this post

    Hi Billy,

    Indeed you can achieve the same with objects very easily. You need to use however PropertyRelation instead TableRelation  - please check this example for more info:
    http://demos.telerik.com/wpf/?GridView/Hierarchy/PropertyHierarchy

    All the best,
    Vlad
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  3. UI for WPF is Visual Studio 2017 Ready
  4. StevenDale
    StevenDale avatar
    100 posts
    Member since:
    Apr 2007

    Posted 11 May 2009 Link to this post

    That worked, however, I have a follow up question. Is there an event that fires whenever you expand a heirarchy? What I mean by expand the heirarchy is when you click the expander arrow and open up the child records in the Grid.

    Thanks,

    Billy Jacobs
  5. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 12 May 2009 Link to this post

    Hello Billy,

    Please check this project for more info:
    http://www.telerik.com/ClientsFiles/126889_silverlightgriddataservicehierarchy.zip

    Greetings,
    Vlad
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  6. StevenDale
    StevenDale avatar
    100 posts
    Member since:
    Apr 2007

    Posted 15 May 2009 Link to this post

    I have it working except for a few problems.

    Here is what I am trying to accomplish and and what problems I am having.

    I have ObservableCollection<ObjectA> which has 3 lists. List1, List2, and List3.

    My parent RadGridView is bound to ObservableCollection<ObjectA>.

    I have set up a PropertyRelation between List1. So the code would be.

     

    GridViewTableDefinition

     

    detailDefinition = new GridViewTableDefinition();

     

     

    detailDefinition.Relation =

    new PropertyRelation("List1");

     

     

     

    this._physicalExamsGridView.TableDefinition.ChildTableDefinitions.Add(detailDefinition);

    In my Child View I have a RadTabControl with 3 tabs. I want to display List1 on Tab1, List2 on Tab2 and List3 on Tab3. I want to display these lists in RadGridView controls and here is where my problem begins. If I use a regular ListView instead of a RadGridView I can subscribe to the Loaded Event for the ListView and within the Loaded event I can bind my ListView to any of the 3 Lists. This works correctly for each List on each Tab. However, if I try to do the exact same thing with RadGridView, it tries to bind all of the Grids to the objects that are defined in the GridViewTableDefinition and PropertyRelation defined above. It also autogenerates the columns which I have set to false and ignores the columns I have specified in XAML.

    My loaded events look like the following and the code works correctly when using ListViews:

    This WORKS For List1, List2 and List3 on appropriate tabs simultaneously when ListView is used.

    ListView

     

    _listListViewForList1 = (ListView)sender;

     

     

     

    ObjectA objectOfTypeA = (ObjectA) (((ExpandableDataRecord)(((RecordManager)(((ListView)sender).DataContext)).MasterRecord)).Data);

     

     

    _listListViewForList1.ItemsSource = objectOfTypeA.List1;

     

     

     

     

    This DOES Not work with RadGridView EXCEPT for the Relation created above for List1. List2 and List3 give errors.

     

     

    RadGridView _gridViewForList1 = (RadGridView)sender;

     

     

     

    ObjectA objectOfTypeA = (ObjectA) (((ExpandableDataRecord)(((RecordManager)(((RadGridView)sender).DataContext)).MasterRecord)).Data);

     

     

    _gridViewForList1.ItemsSource = objectOfTypeA.List;

     

     

     

     

     

     

    Causes Error:

    RadGridView _gridViewForList2 = (RadGridView)sender;

     

    ObjectA objectOfTypeA = (ObjectA) (((ExpandableDataRecord)(((RecordManager)(((RadGridView)sender).DataContext)).MasterRecord)).Data);  

     

    _gridViewForList2.ItemsSource = objectOfTypeA.List2;



    Causes Error: 

     

     

    RadGridView _gridViewForList3 = (RadGridView)sender;  

     

    ObjectA objectOfTypeA = (ObjectA)  (((ExpandableDataRecord)(((RecordManager)(((RadGridView)sender).DataContext)).MasterRecord)).Data);  

     

     

    _gridViewForList3.ItemsSource = objectOfTypeA.List3

    ;

     

     


    To clarify. Lets use the definition above where my PropertyRelation is bound to List1. When my grid on Tab1 is opened and I bind the grid programatically to the items in List1 it works correctly except that it ignores my autogeneratecolumns=false. When I click on Tab2 and the Loaded event fires for Grid2 I get an error when I try to bind the grids ItemsSource to List2. It says that it cannot convert the items that are the type of objects in List1 to the type of objects in List2.

    So, is there some way to remove the auto-binding that is hooked up between the parent RadGridView and the RadGridViews that are listed in the Hierarchical Child?


    Also, if I create all 3 property relations, one for each list,  then I get 3 sub-sections when I expand the master record and I don't want that.

    Thanks,

    Billy Jacobs

     

  7. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 19 May 2009 Link to this post

    Hi Billy,

    Please check the attached project and let me know how it goes.

    Regards,
    Vlad
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
  8. StevenDale
    StevenDale avatar
    100 posts
    Member since:
    Apr 2007

    Posted 19 May 2009 Link to this post

    It works except for one problem.

    If I use the RadGridView_Loaded event to set the ItemsSource it works correctly. However, if I set the ItemsSource Binding in XAML in the RadGridView markup, then even though I have autogenerate columns set to false it autogenerates all of the columns and ignores the ones I have.

    In my RadGridView markup I had:
     

    <

     

    telerik:RadGridView Foreground="Black" AutoGenerateColumns="False" DataContext="{Binding MasterRecord.Data.PatientProcedures}" Loaded="RadGridView_Loaded" ColumnsWidthMode="Fill" telerik:StyleManager.Theme="Office_Black">

     

     

     

    <telerik:RadGridView.Columns>

     

     

     

    <telerik:GridViewDataColumn HeaderText="Name" DataType="{x:Type System:String}" DataMemberBinding="{Binding Path=Procedures.FullDescription}" UniqueName="{x:Null}"/>

     

     

     

    <telerik:GridViewDataColumn HeaderText="Procedure Note" DataMemberBinding="{Binding Path=ProcedureNote}" UniqueName="{x:Null}" />

     

     

     

    <telerik:GridViewDataColumn HeaderText="Started" DataMemberBinding="{Binding Path=StartTime}" UniqueName="{x:Null}" />

     

     

     

    <telerik:GridViewDataColumn HeaderText="Ended" DataMemberBinding="{Binding Path=EndTime}" UniqueName="{x:Null}" />

     

     

     

    <telerik:GridViewDataColumn HeaderText="Comments" DataMemberBinding="{Binding Path=Comments}" UniqueName="{x:Null}" />

     

     

     

    </telerik:RadGridView.Columns>

     

     

     

    </telerik:RadGridView>

     



    I am willing to use the loaded event if it is the only workaround.

    Let me know and thanks very much for the solution.

    Billy Jacobs
  9. Answer
    Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 20 May 2009 Link to this post

    Hi Billy,

    You are right about the problem and indeed Loaded event is a temporary workaround. We will do our best to provide fix for this as soon as possible.

    All the best,
    Vlad
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
Back to Top
UI for WPF is Visual Studio 2017 Ready