读书人

TreeView数据库绑定有关问题 急

发布时间: 2012-01-05 22:36:54 作者: rapoo

TreeView数据库绑定问题 急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!
先谢谢各位了!!!!

问题:
根节点显示出来了,子节点出错.我查了半天发现是下面这句(标注******的)没执行,错误提示:未将对象引用设置到对象实例.

表有两个

"学期 "表
学期编号 学期名称
1 aaaa
2 bbbb
3 cccc

"考试 "表
考试编号 学期编号 考试名称 考试信息
1 1 ddd eee
2 1 fff ggg
3 2 hhh iii

Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Inherits System.Windows.Forms.Form


'找出树中当前节点的级数
Public Function NodeLevel(ByVal n As TreeNode) As Byte
Dim i As Byte = 1
Do Until n.Parent Is Nothing
n = n.Parent
i += 1
Loop
Return i
End Function

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strConn As String = "provider=Microsoft.jet.OLEDB.4.0;Data Source=信息.mdb "
Dim objConn As New OleDbConnection(strConn)
Dim objCmd As New OleDbCommand
Dim strCmd As String

Try
objConn.Close()
objConn.Open()

strCmd = "select * from 学期 "
objCmd.CommandText = strCmd
objCmd.Connection = objConn
Dim mysqlreader As OleDbDataReader = objCmd.ExecuteReader



TreeView1.Nodes.Clear()

While mysqlreader.Read()

Dim tree_root As New TreeNode

tree_root.Tag = mysqlreader.GetString(0)

tree_root.Text = mysqlreader.GetString(1)

TreeView1.Nodes.Add(tree_root)

End While

Catch ex As Exception

MessageBox.Show(ex.ToString, "数据表根节点载入错误 ")

Finally

objConn.Close()

End Try

TreeView1.ExpandAll()

TreeView1.Select()

End Sub

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

Dim strConn As String = "provider=Microsoft.jet.OLEDB.4.0;Data Source=信息.mdb "
Dim objConn As New OleDbConnection(strConn)
Dim objCmd As New OleDbCommand
Dim strCmd As String
If NodeLevel(e.Node).ToString = "1 " Then
If e.Node.GetNodeCount(False) = 0 Then
strCmd = "select * from 考试 where 学期编号= ' " &e.Node.Tag & " ' "
Try

objConn.Open()
objCmd.Connection = objConn


objCmd.CommandText = strCmd
Label1.Text = strCmd
************************************************************************** Dim objReader As OleDbDataReader = objCmd.ExecuteReader
**************************************************************************

While objReader.Read()

Dim leaf_node As TreeNode
leaf_node.Tag = objReader.GetString(0)
leaf_node.Text = objReader.GetString(2)
TreeView1.SelectedNode.Nodes.Add(leaf_node)
End While
Catch ex As Exception
MessageBox.Show(ex.ToString, "数据表子节点载入错误 ")
Finally
objConn.Close()
End Try

End If
End If
End Sub


End Class

[解决办法]
先定义跟数据库打交道的:

Public Class DataBase
Private Const ConnectionStringFormat As String = _
"provider=Microsoft.jet.OLEDB.4.0;Data Source={0} "

Private mdb As String = "信息.mdb "

Public WriteOnly Property File() As String
Set(ByVal value As String)
mdb = value
End Set
End Property

Private Function GetConnection() As OleDb.OleDbConnection
Return New OleDb.OleDbConnection(String.Format(ConnectionStringFormat, mdb))
End Function



Private Function GetCommand(ByVal sql As String) As OleDb.OleDbCommand
Return New OleDb.OleDbCommand(sql, GetConnection)
End Function

Private Function GetDataAdapter(ByVal sql As String) As OleDb.OleDbDataAdapter
Return New OleDb.OleDbDataAdapter(GetCommand(sql))
End Function

Public Sub LoadDataSet(ByVal sql As String, ByVal ds As DataSet)
Using dataAdapter As OleDb.OleDbDataAdapter = GetDataAdapter(sql)
dataAdapter.Fill(ds)
End Using
End Sub

End Class

读书人网 >VB Dotnet

热点推荐