Ok, so I am opening a new topic with this issue
Hi, I am MarkoI am having a problem understanding how this works:http://samples.infragistics.com/sllob/RunSamples.aspx?cn=grid#/grid/handling-hierarchical-data-setsCan someone please put here some sample project with Access database (I am using SQL 2008) so that I can see how do I get data from the database into the class objects and the into grid. I am asking this cause I can't understand this part with binding data to the columns:Text="{Binding Source={StaticResource Strings} , Path=XWG_OrderDetails_Discount}"This is how I load data into grid from database: I make new class "Users" and make method in service "GetUsers" that executes sql query and gets data from db onto list of objects of "Users" class and returns that list. When execution of the service method is completed I do this xamGrid1.ItemsSource = e.Result; and grid displays data.How is this "http://samples.infragistics.com/sllob/RunSamples.aspx?cn=grid#/grid/handling-hierarchical-data-sets" different ? comparing to the my method described above??
PS. Can someone please put here some sample project with Access database.
Please help me resolve this issue,Best regards,Marko
Hi,
Thanks for that sample project - it really helped a lot
I have managed to reproduce your code in my project and now I have child rows, but this raised couple of other issues and doubts.
1st: In declaration of OuterObject from your sample "InnerInfo" is declared as a List of objects
public class MyOuterObjectModel { public List<MyInnerObjectModel> InnerInfo { get; set; } public string Products { get; set; } public string Description { get; set; } }
Can I declare "InnerInfo" as a simple one object like so:
public MyInnerObjectModel InnerInfo { get; set; } // ??? Cause I will have only one inner row (child row) for every outer row (parent row)
2nd: How do I control height of that column with the arrows (Expander Indicator I believe?) Cause if I define my rows to be 20px heigh it creates a gap between rows - I believe because of that first column with expander arrows. Height of those arrow cells remains the same - bigger than 20px. See that gap in the pic:
3rd: Can I somehow remove this sub row header "Komentar" (from pic), that way parent row would act as a header for sub row ?? It would be much more elegant for my web app. Cause parent rows hold the title and child rows hold large text (for example email subject and email body).
3rd RESOLVED - I have used HeaderVisibility property like so:
<ig:ColumnLayout Key="InnerInfo" HeaderVisibility="Collapsed"> and columnlayout header is gone.
Marko.
Hello Marko,
Thank you for your answer, I am glad that my explanations were helpful to you.
As to your question, I have created the sample project that you have requested.
In general, the columnLayout is used to explicitly define the layout for every inner level of your hierarchal data source. That is useful when we want to customize the way that the nested object data is being visualized by the grid. As you will see in my sample, I have created a very simple hierarchal data which contains one object A, that is nested in object B and in object C I am creating a list of B objects (and B contains a list of A objects). So in my grid I have two columns on the first level – these are columns that corresponds to the properties of object B. However my B object has a property that return a Collection of A objects and if I do not explicitly specify a ColumnLayout, the grid would not know how to visualize the data from the A object. Notice that in order to apply this behavior you should set the AutoGenerateColumns to False, because otherwise the grid will handle the columns arrangement for you. In case you do not want to explicitly customize the look and feel of your columns you can take advantage of this automatic arrangement, but as far as I understood you would like to use some template in order to customize your columns, so using a self-defined layout is a good idea.
Please let me know if you require any further assistance regarding the discussed matter.
Sincerely,
Ekaterina
Developer Support Engineer
Infragistics, Inc .
www.infragistics.com/support
Hello
EkStaneva thank you very much for your answer ,now I understand the concept of binding data from the xaml code.
I still have the problem of understanding the concept of "ColumnLayout columns" tough. And I don't get how do I bind data into those columns because that kind of columns can also have their own "ColumnLayout columns"
On this example page:http://samples.infragistics.com/sllob/RunSamples.aspx?cn=grid#/grid/handling-hierarchical-data-sets there is:
<navigation:Page.Resources> <res:GridStrings x:Key="Strings" /> </navigation:Page.Resources>
So I guess there is an object "GridStrings" somewhere on code behind. I can't possibly visualize how this object looks like (his definition) cause one customer has his orders, every order has it's details (it is hierarchical). It is not as simple as Users object from the previous post. That is why I asked if you or someone else could make an example project and post it here cause I can't find one on this site.
Please help I didn't resolved this issue yet.
Best regards,
Hello,
I have been looking into the sample provided and compared to your scenario the two implementations does basically the same, but the Infragistics sample performs the action via binding from the xaml.
To be more specific, you set the xamGrid’s ItemsSource in the code behind. I am not sure what e.Result is, but I assume that this is the output from the service that provides the data. You mentioned that you have collection of Users that are loaded with data retrieved from the db. Let say that you have a Name property in this User class and you have filled it with a data. In case you have a textBox, like in the Infragistics sample, that you wish to fill with this name, you can do this in two different ways:
From the code behind:
myText.Text = User.Name;
or bind it from the xaml:
xmlns:local="clr-namespace:MySamle" //reference to the codehind
.
<Grid.Resources>
<local:User x:Key="UsrData"/> // we get the class
</Grid.Resources>
<Text="{Binding Source={StaticResource UsrData } , Path= Name }" // and bind to the needed property
What happens in the sample is pretty much the same and it is possible to Grid’s ItemsSource from the xaml. Notice that you probably should implement the INotifyPropertyChanged interface, in order to have your TextBox updated according to its corresponding data source. For more information on the mentioned interface, please visit:
http://msdn.microsoft.com/en-us/library/ms743695.aspx
Please do not hesitate to ask any question regarding the original discussed topic .
Infragistics, Inc.