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

[Solved] Grid Hirarchy Issue

1 Answer 139 Views
GridView
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
sulagna
Top achievements
Rank 1
sulagna asked on 17 Sep 2010, 03:27 PM

Hi,

From the Demo for this pattern of hirarchy
Grid1
    Grid2
        Grid3
I was able to resolve till 2nd level means till Grid 2.Below I have attached the screen in JEPG.How to get till 3rd level.

My main screen contains list of usecases and then each is break down into features and feature into tasks
Each Usecase has list of features.
Each Feature has list of tasks.
So, I need 3 levels of hirarchy.

My problem is I am not using separate 3 tables which gets resolved if I take Demo example.I am getting everyting in DataContract.Summary.Now how to segregate 3rd one and bind it to xaml
  
I am getting everything(usecase,feature and task lists) in Summary.xsd which is a typed Data Set and I have used a Summary data contract and filling it.The class diagram I have attached.
Now how to represent that in below xaml

My other issue is I am binding FeatureCollection which is getting repeated in every use case eventhough I have written the filter criteria.

Here is my xaml file:
<

 

 

telerik:RadGridView x:Name="RadGridView1" CanUserFreezeColumns="False" GridLinesVisibility="Horizontal" ItemsSource="{Binding Summary.useCaseList}" IsReadOnly="True" AutoGenerateColumns="False">

 

 

 

 

<telerik:RadGridView.ChildTableDefinitions>

 

 

 

 

<telerik:GridViewTableDefinition>

 

 

 

 

<telerik:GridViewTableDefinition.Relation>

 

 

 

 

<telerik:PropertyRelation ParentPropertyName="Summary.useCaseList" />

 

 

 

 

</telerik:GridViewTableDefinition.Relation>

 

 

 

 

</telerik:GridViewTableDefinition>

 

 

 

 

</telerik:RadGridView.ChildTableDefinitions>

 

 

 

 

 

 

<telerik:RadGridView.Columns>

 

 

 

 

<telerik:GridViewDataColumn DataMemberBinding="{Binding UseCaseNum}" Header="UseCase Number" />

 

 

 

 

<telerik:GridViewDataColumn DataMemberBinding="{Binding UseCaseName}" Header="UseCase Name" />

 

 

 

 

<telerik:GridViewDataColumn DataMemberBinding="{Binding UseCaseStatus}" Header="UseCase Status" />

 

 

 

 

</telerik:RadGridView.Columns>

 

 

 

 

<telerik:RadGridView.HierarchyChildTemplate>

 

 

 

 

<DataTemplate>

 

 

 

 

<telerik:RadGridView x:Name="RadGridView1" CanUserFreezeColumns="False" AutoGenerateColumns="False" ItemsSource="{Binding FeatureCollection}" ShowGroupPanel="False" IsReadOnly="True">

 

 

 

 

<telerik:RadGridView.Columns >

 

 

 

 

<telerik:GridViewDataColumn DataMemberBinding="{Binding FeatureNumber}" Header="Feature Number" />

 

 

 

 

<telerik:GridViewDataColumn DataMemberBinding="{Binding FeatureStatusName}" Header="Feature StatusName" />

 

 

 

 

</telerik:RadGridView.Columns>

 

 

 

 

 

</telerik:RadGridView>

 

 

 

 

</DataTemplate>

 

 

 

 

 

</telerik:RadGridView.HierarchyChildTemplate>

 

 

 

 

 

</telerik:RadGridView>

My .cs file is

 

public static DataContracts.Summary TranslateSummaryXSD(LeMonWeb.Summary summary)
        {
            DataContracts.Summary summaryObject = null;
            IList<DataContracts.Task> taskList = null;
            IList<DataContracts.Feature> featureList = null;
            IList<DataContracts.UseCase> useCaseList = null;
            if (summary != null)
            {
                summaryObject = new Summary();
                featureList=new List<Feature>();
                useCaseList=new List<UseCase>();
                taskList=new List<Task>();              
               
                foreach (LeMonWeb.Summary.UseCaseRow row in summary.Tables[0].Rows)
                {
                    foreach (LeMonWeb.Summary.FeatureRow row1 in summary.Tables[1].Rows)
                    {
                        if (row.UseCaseID == row1.UseCaseID)
                        {
                           
                            var featureObj = new DataContracts.Feature
                            {
                                UseCaseId = row1.UseCaseID,
                                FeatureNumber = row1.FeatureNumber,
                                //FeatureDescription = row.FeatureDescription,
                                FeatureEstimate = row1.FeatureEstimate,
                                ReviseEstimate = row1.ReviseEstimate,
                                FeaturePriority = row1.Priority,
                                FeatureStatusName = row1.FeatureStatus
                            };
                            featureList.Add(featureObj);
                        }
                      
                    }
                    var useCaseObj = new DataContracts.UseCase
                    {
                        UseCaseNum = row.UseCaseNumber,
                        UseCaseName = row.UseCaseName,
                        UseCaseStatus = row.UseCaseStatus,
                        UseCaseDesc = row.UseCaseDesc,
                        UseCaseId = row.UseCaseID,
                        FeatureCollection = featureList,

                    };
                   
                    useCaseList.Add(useCaseObj);
                   
      
                }
              
                foreach (LeMonWeb.Summary.TaskRow row in summary.Tables[2].Rows)
                {
                    var taskObj = new DataContracts.Task
                    {
                        FeatureID = row.FeatureID,
                        TaskDesc = row.TaskDesc,
                        TaskNumber = row.TaskNumber,
                        TaskStatus = row.TaskStatus,
                        ActualEffort = row.ActualEffort,
                        RemainingEffort = row.RemainingEffort,
                        ResourceName = row.ResourceName,
                        TaskName = row.TaskName,
                        ScheduledEffort = row.ScheduledEffort,
                        //IterationName=row.IterationName,

                    };
                    taskList.Add(taskObj);
                }

                summaryObject.useCaseList = useCaseList;
                //summaryObject.feautureList = featureList;
                summaryObject.taskList = taskList;              
               
            }
            return summaryObject;
        }

My DataContracts are:
    [DataContract(Name = "Feature")]
    public class Feature
    {
        [DataMember]
        public int UseCaseId { get; set; }
        [DataMember]
        public string FeatureNumber { get; set; }
        [DataMember]
        public string FeatureName { get; set; }
        [DataMember]
        public string FeatureDescription { get; set; }
        [DataMember]
        public double FeatureEstimate { get; set; }
        [DataMember]
        public string ReviseEstimate { get; set; }
        [DataMember]
        public string FeatureStatusName { get; set; }
        [DataMember]
        public string FeaturePriority { get; set; }
        [DataMember]
        public double PercentageCompleted { get; set; }
        [DataMember]
        public IList<Task> TaskCollection { get; set; }
    }
-----------------------------------------------------------------------
   [DataContract(Name = "Summary")]
    public class Summary
    {
        //[DataMember]
        //public IList<Feature> feautureList { get; set; }
        [DataMember]
        public IList<UseCase> useCaseList { get; set; }
        [DataMember]
        public IList<Task> taskList { get; set; }
    }
-------------------------------------------------
  [DataContract(Name = "UseCase")]
    public class UseCase
    {
        [DataMember]
        public int UseCaseId { get; set; }
        [DataMember]
        public string UseCaseNum { get; set; }
        [DataMember]
        public string UseCaseName { get; set; }
        [DataMember]
        public string UseCaseDesc { get; set; }
        [DataMember]
        public string UseCaseStatus { get; set; }
        [DataMember]
        public int UseCaseStatusID { get; set; }
        [DataMember]
        public string UsecaseDetails { get; set; }
        [DataMember]
        public IList<Feature> FeatureCollection{ get; set; }
    }
-------------------------------------

 [DataContract(Name = "Task")]
    public class Task
    {

        [DataMember]
        public string FeatureNumber { get; set; }

        [DataMember]
        public int FeatureID { get; set; }

        [DataMember]
        public string TaskName { get; set; }

        [DataMember]
        public string TaskDesc { get; set; }
       
        [DataMember]
        public double ScheduledEffort { get; set; }
       
        [DataMember]
        public double ActualEffort { get; set; }
       
        [DataMember]
        public double RemainingEffort { get; set; }
       
        [DataMember]
        public string TaskStatus { get; set; }
       
        [DataMember]
        public string ResourceName { get; set; }
      
        [DataMember]
        public string TaskNumber { get; set; }

        [DataMember]
        public string IterationName { get; set; }
    }

1 Answer, 1 is accepted

Sort by
0
Yavor Georgiev
Telerik team
answered on 20 Sep 2010, 05:06 PM
Hello sulagna,

 Could you please try with the following XAML?
<telerik:RadGridView.ChildTableDefinitions>
    <telerik:GridViewTableDefinition>
        <telerik:GridViewTableDefinition.Relation>
            <telerik:PropertyRelation ParentPropertyName="Features"/>
        </telerik:GridViewTableDefinition.Relation>
        <telerik:GridViewTableDefinition.ChildTableDefinitions>
            <telerik:GridViewTableDefinition>
                <telerik:GridViewTableDefinition.Relation>
                    <telerik:PropertyRelation ParentPropertyName="Tasks" />
                </telerik:GridViewTableDefinition.Relation>
            </telerik:GridViewTableDefinition>
        </telerik:GridViewTableDefinition.ChildTableDefinitions>
    </telerik:GridViewTableDefinition>
</telerik:RadGridView.ChildTableDefinitions>


Greetings,
Yavor Georgiev
the Telerik team
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 Public Issue Tracking system and vote to affect the priority of the items
Tags
GridView
Asked by
sulagna
Top achievements
Rank 1
Answers by
Yavor Georgiev
Telerik team
Share this question
or