在项目中以前用过微软的TreeView控件,但是不是很熟悉,现在遇到以下困难,请各位高手帮忙解决,或者推荐一个tree控件。1,可以在后台代码中生成树形结构。
2,单击某个节点时,展开节点,同时折叠起来之前展开的节点。即,一次只能展开一个节点(因为数据比较多)。(这个要求用微软的tree勉强可以实现,就是每次都重新生成整个树,但需要整个页面刷新)3,每个节点下的内容,只在单击该节点时才加载。(这个用微软的tree能实现,但是没有加载子节点的节点在显示出来后,没有“+”号,这点不符合要求)4,单击节点左侧的“+”号,和单击节点文字同样的效果,都是展开所单击的节点,折叠之前的节点。(这个目前还没实现,好像必须打开auto postback)5,每个节点的图标,可以在生成树时在程序中指定。(微软的tree好像可以)6,支持.net 1.1微软的treeview目前遇到的最让人困惑的问题就是焦点问题,单击后焦点一直在根节点上,设置不到当前节点,不知道为什么。
2,单击某个节点时,展开节点,同时折叠起来之前展开的节点。即,一次只能展开一个节点(因为数据比较多)。(这个要求用微软的tree勉强可以实现,就是每次都重新生成整个树,但需要整个页面刷新)3,每个节点下的内容,只在单击该节点时才加载。(这个用微软的tree能实现,但是没有加载子节点的节点在显示出来后,没有“+”号,这点不符合要求)4,单击节点左侧的“+”号,和单击节点文字同样的效果,都是展开所单击的节点,折叠之前的节点。(这个目前还没实现,好像必须打开auto postback)5,每个节点的图标,可以在生成树时在程序中指定。(微软的tree好像可以)6,支持.net 1.1微软的treeview目前遇到的最让人困惑的问题就是焦点问题,单击后焦点一直在根节点上,设置不到当前节点,不知道为什么。
[再接再厉.又一套经典.net控件集-之三].Infragistics.NetAdvantage.2003
包你满意
'------------------------------------------------------------
' 名称:btnSelect_Click
' 功能描述:通过在文本框内输入工号,在treeview树节点中选中该工号
' 参数说明:
' 创建人:
' 创建时间:2007/12/17 11:39
' 开发文档标识: ' 文档创建日期:
' 功能模块标识:
'------------------------------------------------------------
Private Sub btnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelect.Click
Try
Dim Astrsql As String
Dim Acmd As New sqlCommand '判断是否已打开数据库,如果数据库连接已关闭就打开
If Gcon.State = ConnectionState.Closed Then
'从配置文件中读取连接数据库的字符串
Gcon.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("VconStr")
Gcon.Open()
End If If Trim(Me.txtUserIDselc.Text) = "" Then
Me.Response.Write("<script language=""vbs"">alert""请输入工号!""</script>")
Page.RegisterStartupScript("focus", "<script language=javascript>document.all('txtUserIDselc').focus()</script>")
Exit Sub
End If Dim i As Integer
Dim j As Integer = Me.treeRenShi.Nodes(0).Nodes.Count - 1
For i = 0 To Me.treeRenShi.Nodes(0).Nodes.Count - 1
If Trim(Me.txtUserIDselc.Text) = Trim(Me.treeRenShi.Nodes(0).Nodes.Item(i).ID) Then
Me.treeRenShi.SelectedNodeIndex = "0." & i
Exit For
End If
Next If i > j Then
Me.Response.Write("<script language=""vbs"">alert""没有您查找的记录!""</script>")
Me.treeRenShi.SelectedNodeIndex = ""
Me.btnDelete.Enabled = False
Me.btnUpdate.Enabled = False
Else
'如果查找记录不为空就令删除和修改按纽设置有效
Me.btnDelete.Enabled = True
Me.btnUpdate.Enabled = True
End If
'调用函数显示索引节点的详细信息
treeRenShi_Afterselect()
Catch ex As Exception
Me.lblMessage.Text = "错误提示:" & ex.Message
End Try
' 名称:treeRenShi_Afterselect
' 功能描述:选中树节点触发次事件,根据此节点的内容显示其详细信息
' 参数说明:
' 创建人:
' 创建时间:2007/12/17 19:39
' 开发文档标识: 2007/12/17 19:39
' 文档创建日期:
' 功能模块标识:
'------------------------------------------------------------
Private Sub treeRenShi_Afterselect()
Try
Dim Astrsql As String
Dim Acmd As New sqlCommand
Dim AYGSelIndex As String '判断是否已打开数据库,如果数据库连接已关闭就打开
If Gcon.State = ConnectionState.Closed Then
'从配置文件中读取连接数据库的字符串
Gcon.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("VconStr")
Gcon.Open()
End If '获取选中节点处的索引
AYGSelIndex = Me.treeRenShi.SelectedNodeIndex
'如果没有节点被选择就清除文本框的内容
If AYGSelIndex = "" Then '使修改删除按纽无效
Me.btnUpdate.Enabled = False
Me.btnDelete.Enabled = False '调用清空所有文本框的函数
Clear_text()
Exit Sub
End If
'Me.ToobRenShi.ToolbarTagName()
'使修改删除按纽有效
Me.btnUpdate.Enabled = True
Me.btnDelete.Enabled = True Me.treeRenShi.Nodes(0).Nodes.Item(AYGSelIndex).SelectedStyle.GetColor()
'获取选中节点处的索引的工号
Me.Session("YGSelIndexID") = Trim(Me.treeRenShi.GetNodeFromIndex(AYGSelIndex).ID)
Astrsql = "select * from 员工 where 工号='" & Session("YGSelIndexID") & "'"
Acmd.Connection = Gcon
Acmd.CommandText = Astrsql
Dim Ared As sqlDataReader = Acmd.ExecuteReader
'调用清空所有文本框的函数
Clear_text() '在文本框内显示所有属性
If Ared.Read Then If Not Ared("工号") Is System.DBNull.Value Then
Me.txtUserID.Text = Ared("工号")
End If If Not Ared("姓名") Is System.DBNull.Value Then
Me.txtUserName.Text = Ared("姓名")
End If If Not Ared("性别") Is System.DBNull.Value Then
Me.txtSex.Text = Ared("性别")
End If If Not Ared("职务") Is System.DBNull.Value Then
Me.txtPosition.Text = Ared("职务")
End If If Not Ared("民族") Is System.DBNull.Value Then
Me.txtMinzu.Text = Ared("民族")
End If If Not Ared("学历") Is System.DBNull.Value Then
Me.txtXueLi.Text = Ared("学历")
End If If Not Ared("专业") Is System.DBNull.Value Then
Me.txtZhuanYe.Text = Ared("专业")
End If If Not Ared("籍贯") Is System.DBNull.Value Then
Me.txtJiGuan.Text = Ared("籍贯")
End If If Not Ared("毕业院校") Is System.DBNull.Value Then
Me.txtBYYX.Text = Ared("毕业院校")
End If If Not Ared("出生日期") Is System.DBNull.Value Then
Me.txtBirthday.Text = Ared("出生日期")
End If If Not Ared("雇佣日期") Is System.DBNull.Value Then
Me.txtImpolyeDate.Text = Ared("雇佣日期")
End If If Not Ared("Email地址") Is System.DBNull.Value Then
Me.txtEmail.Text = Ared("Email地址")
End If If Not Ared("联系方式") Is System.DBNull.Value Then
Me.txtLXFS.Text = Ared("联系方式")
End If If Not Ared("身份证号码") Is System.DBNull.Value Then
Me.txtSFZHM.Text = Ared("身份证号码")
End If If Not Ared("所属部门") Is System.DBNull.Value Then
Me.txtSSBMe.Text = Ared("所属部门")
End If If Not Ared("紧急联系人") Is System.DBNull.Value Then
Me.txtJJLXR.Text = Ared("紧急联系人")
End If If Not Ared("婚姻状况") Is System.DBNull.Value Then
Me.txtHYZK.Text = Ared("婚姻状况")
End If If Not Ared("身体状况") Is System.DBNull.Value Then
Me.txtSTZK.Text = Ared("身体状况")
End If If Not Ared("个人爱好") Is System.DBNull.Value Then
Me.txtGRAH.Text = Ared("个人爱好")
End If If Not Ared("个人专长") Is System.DBNull.Value Then
Me.txtGRZC.Text = Ared("个人专长")
End If If Not Ared("获奖证书") Is System.DBNull.Value Then
Me.txtHJZS.Text = Ared("获奖证书")
End If If Not Ared("处罚记录") Is System.DBNull.Value Then
Me.txtCFJL.Text = Ared("处罚记录")
End If If Not Ared("经验") Is System.DBNull.Value Then
Me.txtJY.Text = Ared("经验")
End If If Not Ared("照片") Is System.DBNull.Value Then
Me.imgZP.ImageUrl = Ared("照片")
End If If Not Ared("描述") Is System.DBNull.Value Then
Me.txtMiaoShu.Text = Ared("描述")
End If
End If
Me.dgRenShi.SelectedItemStyle.Reset()
Ared.Close()
Gcon.Close()
Catch ex As Exception
Me.lblMessage.Text = "错误提示:" & ex.Message
End Try
End Sub
' 名称:LoadTreeView
' 功能描述:用工号填充treeView
' 参数说明:
' 创建人:
' 创建时间:2007/12/17 10:11
' 开发文档标识: 2007/12/17 10:11
' 文档创建日期:
' 功能模块标识:
'------------------------------------------------------------
Private Sub LoadTreeView()
Try
Dim Astrsql As String
Dim Acmd As New sqlCommand
Dim Aadp As New sqlDataAdapter
Dim Adst As New DataSet '判断是否已打开数据库,如果数据库连接已关闭就打开
If Gcon.State = ConnectionState.Closed Then
'从配置文件中读取连接数据库的字符串
Gcon.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("VconStr")
Gcon.Open()
End If '组织查询工号的sqlClient字符串
Astrsql = "select 工号,姓名 from 员工 where not ltrim(工号) is null"
Acmd.CommandText = Astrsql
Acmd.Connection = Gcon
Dim Ared As sqlDataReader = Acmd.ExecuteReader '清除所有节点
Me.treeRenShi.Nodes(0).Nodes.Clear()
'循环所有工号 Dim i As Integer = 0
While Ared.Read
'定义树节点
Dim GHnode As New TreeNode
GHnode.ID = Trim(Ared("工号"))
'使节点文本同时显示员工工号和姓名
GHnode.Text = Trim(GHnode.ID) & " " & Trim(Ared("姓名"))
'为treeview增加节点
Me.treeRenShi.Nodes(0).Nodes.Add(GHnode)
Me.treeRenShi.Nodes(0).Nodes(i).ImageUrl = "图象\BeBox Watcher.ico"
i = i + 1
End While '使根节点目录下的所有字节点展开
Me.treeRenShi.Nodes(0).Expanded = True
'Ared.Close()
Gcon.Close()
Catch ex As Exception
Me.lblMessage.Text = "错误提示:" & ex.Message
End Try
End Sub
第一个函数:是在文本框内输入工号,如存在该工号,就在treeview中选中.
第二个函数:使选中的工号记录的内容显示出来
第三个函数:为treeview填充工号.
相信你会明白了
'设置treeview节点字体的大小
Me.treeRenShi.DefaultStyle("font-size") = "11pt"
Me.treeRenShi.DefaultStyle("color") = "blue"
Treeview.Selectedstyle=color:red;background:#00ff00;
即选中节点的颜色