I have tried for 7 hours to change my child node column to no avail.
I have a Tree bound to a datasource with a relationship. The root node displays the correct column from the datatable but the child node is displaying the second column from the relationed. Sadly this column is the foreignkey for my relationship. How do I get the child node to display the 3rd column instead?
I am using outlookexpress viewmode here.
I have in my primary table :- IndustryID, IndustryName, Note, Rating
and my secondary table :- SkillID, IndustryID, SkillName, Note
Relationship is based on the IndustryID
My tree shows the Root node (IndustryName) and ChildNode(IndustryID). I would like the child to show SkillName.
sample code will go a long way here.
Hi,
The child nodes will display in a grid style by default and thus it will show all of the fields of the child data, not just one field. It sounds like you have set it up in such a way that the child nodes show in Standard mode - so there's no grid, they just show up as nodes with text.
When a bound node displays in Standard style, it will default to displaying the first field in the data as it's text. To change this, you have to set the NodeTextColumn property on the ColumnSet which is applied to those nodes. If you are manually creating your ColumnSets, then you would set it there. If you are letting the tree auto-generate the ColumnSets, then you could do this in the ColumnSetGenerated event.
Yes I am using standard/ outlookexpress not grid.
I have tried the NodeTextColumn and I am only able to change the display field for the root node. I can't find reference to the childnode.
I did notice that the ColumnSetGenerated gets fired twice. Once for the Primary table and a second time for the relationship table (which is identical in schema to the primary table).
My temporary workaround just now is to change the ordinal position of the column in my datatable before passing it to the list. but this is not ideal and presents a management issue.
this is the line I use for the parent node in ColumnSetGenerated;
e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("Industry")
This is the routine I use for the 2 call but the childnode still will not display GroupName
'Root Node
If e.ColumnSet.Key = "tblIndustry" Then
End If
'Child Node
If e.ColumnSet.Key = "Group" Then
e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("GroupName")
Is there any way you could post a small sample project demonstrating this? There are so many variables here that it's very hard to guess why it's not working. The code you have posted here appears correct to me.
The data for the project is in MS SQL and we have a class library that retrieves the data and returns the table. Creating a sample project to post will take me a considerable amount of time which is not practical at this time. I have resorted to using a different tree component.
I will however revisit this when time constraints are not a problem. As you noted from my code, I am telling it to use a field but it is using a different field. As you said, in Gridview I can see all the fields and I know they are there. but in Outlook express or Standard view, it will only show the second column. No matter what column I tell it.
i am not able to see your attached zip file. can you help me how to get the same?
Thanks
You are the man. Thanks a lot. So much easier when you know how.
Okay, I see the issue now. I was under the impression that you are showing stand-style nodes, but that's not the case. So the NodeTextColumn will do nothing here.
You are using OutlookExpress ViewStyle and just hiding all but one column. So what you have to do in a case like this where you are using OutlookExpress style and you have different ColumnSets for each band, is map the child column to the parent column you want. You do this using the MapToColumn property on the column.
#Region " ColumnSet Generated " Private Sub ultraTree1_ColumnSetGenerated(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventArgs) Handles UltraTree1.ColumnSetGenerated Dim tree As UltraTree = CType(sender, UltraTree) If e.ColumnSet.Key = "Project" Then 'e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("TaskName") e.ColumnSet.Columns("TaskName").MapToColumn = "ProjectName" End If If e.ColumnSet.Key = "Projects" Then For Each _col As UltraWinTree.UltraTreeNodeColumn In e.ColumnSet.Columns _col.Visible = False Next e.ColumnSet.Columns("Project").Visible = True e.ColumnSet.Columns("ProjectName").Visible = True e.ColumnSet.NodeTextColumn = e.ColumnSet.Columns("ProjectName") End If End Sub#End Region
Any luck with the files?
Thanks, I have added the file now.