Telerik winforms radgridview 分层数据未正确显示

Telerik winforms radgridview hierarchical data not showing correctly

美好的一天, 我在 vb.net winforms vs2013 中使用 telerik radgridview 分层数据。

我遇到了这个问题,我在 radgridview 和第一个 gridviewtemplate 中正确地看到了第一个列表,但是在第二个 gridviewtemplate 中我没有看到任何东西。我没思路了,我post代码放这里看看有没有人能帮帮我。

Private Function loaddt0() As Data.DataSet
    Dim dt As New Data.DataSet
    dt.Tables.Add("person")
    dt.Tables("person").Columns.Add("personID")
    dt.Tables("person").Columns.Add("personName")
    For i As Integer = 1 To 3
        Dim rw As Data.DataRow
        rw = dt.Tables("person").NewRow
        rw.Item("personID") = i
        rw.Item("personName") = "person" & " - " & i.ToString
        dt.Tables("person").Rows.Add(rw)
    Next
    Return dt
End Function
Private Function loaddt1() As Data.DataSet
    Dim dt As New Data.DataSet
    dt.Tables.Add("project")
    dt.Tables("project").Columns.Add("projectID")
    dt.Tables("project").Columns.Add("projectName")
    dt.Tables("project").Columns.Add("personID")
    dt.Tables("project").Columns.Add("personprojectID")
    Dim rw As Data.DataRow
    rw = dt.Tables("project").NewRow
    rw.Item("projectID") = 1
    rw.Item("projectName") = "Proyect 1"
    rw.Item("personID") = 1
    rw.Item("personprojectID") = "1-1"
    dt.Tables("project").Rows.Add(rw)
    Dim rw1 As Data.DataRow
    rw1 = dt.Tables("project").NewRow
    rw1.Item("projectID") = 2
    rw1.Item("projectName") = "Proyect 2"
    rw1.Item("personID") = 1
    rw1.Item("personprojectID") = "1-2"
    dt.Tables("project").Rows.Add(rw1)
    Dim rw2 As Data.DataRow
    rw2 = dt.Tables("project").NewRow
    rw2.Item("projectID") = 1
    rw2.Item("projectName") = "Proyect 1"
    rw2.Item("personID") = 2
    rw2.Item("personprojectID") = "2-1"
    dt.Tables("project").Rows.Add(rw2)
    Dim rw3 As Data.DataRow
    rw3 = dt.Tables("project").NewRow
    rw3.Item("projectID") = 1
    rw3.Item("projectName") = "Proyect 1"
    rw3.Item("personID") = 3
    rw3.Item("personprojectID") = "3-1"
    dt.Tables("project").Rows.Add(rw3)
    Return dt
End Function
Private Function loaddt2() As Data.DataSet
    Dim dt As New Data.DataSet
    dt.Tables.Add("task")
    dt.Tables("task").Columns.Add("personprojectID")
    dt.Tables("task").Columns.Add("taskID")
    dt.Tables("task").Columns.Add("taskName")
    dt.Tables("task").Columns.Add("personID")
    dt.Tables("task").Columns.Add("personprojecttaskID")
    Dim rw As Data.DataRow
    rw = dt.Tables("task").NewRow
    rw.Item("personprojectID") = "1-1"
    rw.Item("taskID") = 3
    rw.Item("taskName") = "Task 3"
    rw.Item("personID") = 1
    rw.Item("personprojecttaskID") = "1-1-3"
    dt.Tables("task").Rows.Add(rw)
    Dim rw1 As Data.DataRow
    rw1 = dt.Tables("task").NewRow
    rw1.Item("personprojectID") = "1-1"
    rw1.Item("taskID") = 5
    rw1.Item("taskName") = "Task 5"
    rw1.Item("personID") = 1
    rw1.Item("personprojecttaskID") = "1-1-5"
    dt.Tables("task").Rows.Add(rw1)
    Dim rw2 As Data.DataRow
    rw2 = dt.Tables("task").NewRow
    rw2.Item("personprojectID") = "1-1"
    rw2.Item("taskID") = 8
    rw2.Item("taskName") = "Task 8"
    rw2.Item("personID") = 1
    rw2.Item("personprojecttaskID") = "1-1-8"
    dt.Tables("task").Rows.Add(rw2)
    Dim rw3 As Data.DataRow
    rw3 = dt.Tables("task").NewRow
    rw3.Item("personprojectID") = "1-2"
    rw3.Item("taskID") = 6
    rw3.Item("taskName") = "Task 6"
    rw3.Item("personID") = 1
    rw3.Item("personprojecttaskID") = "1-2-6"
    dt.Tables("task").Rows.Add(rw3)
    Dim rw4 As Data.DataRow
    rw4 = dt.Tables("task").NewRow
    rw4.Item("personprojectID") = "2-1"
    rw4.Item("taskID") = 1
    rw4.Item("taskName") = "Task 1"
    rw4.Item("personID") = 1
    rw4.Item("personprojecttaskID") = "2-1-1"
    dt.Tables("task").Rows.Add(rw4)
    Dim rw5 As Data.DataRow
    rw5 = dt.Tables("task").NewRow
    rw5.Item("personprojectID") = "3-1"
    rw5.Item("taskID") = 8
    rw5.Item("taskName") = "Task 8"
    rw5.Item("personID") = 3
    rw5.Item("personprojecttaskID") = "3-1-8"
    dt.Tables("task").Rows.Add(rw5)
    Return dt
End Function
Private Sub load2()
    Dim ldt As Data.DataSet
    ldt = loaddt0()
    rgvtareas.DataSource = ldt.Tables("person").DefaultView
    ldt.Dispose()
    Dim gridviewtemple As New Telerik.WinControls.UI.GridViewTemplate
    Dim ldt2 As Data.DataSet
    ldt2 = loaddt1()
    gridviewtemple.DataSource = ldt2.Tables("project").DefaultView
    ldt2.Dispose()
    Dim ldt3 As Data.DataSet
    ldt3 = loaddt2()
    Dim gridviewtemple2 As New Telerik.WinControls.UI.GridViewTemplate
    gridviewtemple2.DataSource = ldt3.Tables("task").DefaultView
    ldt3.Dispose()
    rgvtareas.MasterTemplate.Templates.Add(gridviewtemple)
    Dim relation As New Telerik.WinControls.UI.GridViewRelation(rgvtareas.MasterTemplate)
    relation.ChildTemplate = gridviewtemple
    relation.RelationName = "PERSONS - PROJECTS"
    relation.ParentColumnNames.Add("personID")
    relation.ChildColumnNames.Add("personID")
    rgvtareas.Relations.Add(relation)
    gridviewtemple.AllowAddNewRow = False
    gridviewtemple.AllowDragToGroup = False
    gridviewtemple.AllowDeleteRow = False
    gridviewtemple.AllowEditRow = False
    gridviewtemple.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
    'Me.cargaridiomagrv3(gridviewtemple2)
    'Me.dgdarformatogvt(gridviewtemple)
    gridviewtemple.Templates.Add(gridviewtemple2)
    Dim relation2 As New Telerik.WinControls.UI.GridViewRelation(gridviewtemple)
    relation2.ChildTemplate = gridviewtemple2
    relation2.RelationName = "PERSONPROJECTS - TASKS"
    relation2.ParentColumnNames.Add("personprojectID")
    relation2.ChildColumnNames.Add("personprojectID")
    gridviewtemple2.AllowAddNewRow = False
    gridviewtemple2.AllowDragToGroup = False
    gridviewtemple2.AllowDeleteRow = False
    gridviewtemple2.AllowEditRow = False
    gridviewtemple2.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
    rgvtareas.Refresh()
End Sub

我得到的图像是:

您错过了将第二个 GridViewRelation 添加到控件的 Relations 集合中。只需在底部添加这一行:

rgvtareas.Relations.Add(relation2)