Eftersom den trädkontroll som finns i .NET inte funkar bra med databasbindning så kollade jag på MSDN och hittade här: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/custcntrlsamp3.asp hur man kunde göra en egen kontroll. Jag fick det hela att funka men inte när jag tar emot och binder dataset som innehåller "NULL"!! Tyvärr måste jag i min applikation kunna det och har massor av problem. Finns det nån som kan hjälpa mig? Databasbindning till treeView
Här är en kodsnutt från min överlagrade trädkontroll, har försökt modifiera så att den ska lägga till tom sträng om pdValue/pdDisplay är dbNull, men det funka inte bra så jag tog bort det.
'innerList
Dim myNewLeafNode As TreeLeafNode
Dim currObject As Object
currObject = cm.List(currentListIndex)
If Me.DisplayMember <> "" AndAlso Me.ValueMember <> "" Then
'add leaf node?
Dim pdValue As System.ComponentModel.PropertyDescriptor
Dim pdDisplay As System.ComponentModel.PropertyDescriptor
pdValue = cm.GetItemProperties()(Me.ValueMember)
pdDisplay = cm.GetItemProperties()(Me.DisplayMember)
myNewLeafNode = _
New TreeLeafNode(CStr(pdDisplay.GetValue(currObject)), _
currObject, _
pdValue.GetValue(currObject), _
currentListIndex)
Else
myNewLeafNode = _
New TreeLeafNode(currObject.ToString, _
currObject, _
currObject, _
currentListIndex)
End If
currNodes.Add(CType(myNewLeafNode, TreeNode))
currentListIndex += 1
End If
Så här ser databindningen i app ut:
dataset.Merge(m_Service.getAction())
view = dataset.Tables("Actions").DefaultView
With DbTreeCtrlActions
.ValueMember = "Händelser"
.DisplayMember = "Händelser"
.DataSource = view
.AddGroup("Actions", "HuvudStatus", "HuvudStatus", "HuvudStatus", 0, 0)
.AddGroup("Actions2", "StatusTyp", "StatusTyp", "StatusTyp", 0, 0)
.AddGroup("Actions3", "HändelseKedja", "HändelseKedja", "HändelseKedja", 0, 0)
End With
Är oerhört tacksam för förslag på lösning.