用数据库中的两个表填充treeview

时间:2016-10-25 15:54:00

标签: database vb.net treeview

这是我上一期提问的代码:

Dim node As New TreeNode  
Dim lastChapter As String = String.Empty

While dr2.Read()
    Dim curChapter = dr2("chapterno").ToString
    If curChapter Is Nothing OrElse curChapter <> lastChapter Then
        node = New TreeNode(curChapter)
        lastChapter = curChapter
        geo.Nodes("toc").Nodes.Add(node)

    End If
    node.Nodes.Add(dr2("lessonno").ToString)
End While

这真的很有帮助,但我有一个问题。在我的系统中,章节表和课程表是不同的表,但相互连接。章节号是课程表的外键。可能会发生章节不包含任何课程,我希望该章节仍然出现在树视图中(名为&#39; geo&#39;)。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我想你的两个表都有这个模式:

table Chapter
    ChapterNo  ==> PK
    Title

table Lesson
    LessonNo   ==> PK 
    Title
    ChapterNo  ==> FK to Chapter

现在,如果您想要检索章节的所有章节和课程,那么要准备的查询就是这样的

SELECT c.ChapterNo, c.Title, l.LessonNo, l.Title
FROM Chapter c LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo

这将导致每个章节的记录也适用于没有课程的章节,并且每个相关的课程都会重复相同的章节

该查询应该用于填充上面的数据读取器(dr2)并且代码中需要稍微更改以避免在没有课程的情况下读取章节的记录时出现异常

While dr2.Read()
    ....
    if Not IsDBNull(dr2("Lessonno") Then
        node.Nodes.Add(dr2("lessonno").ToString)
    End If
End While