初次使用treeview,现在想在页面打开时,treeview能把数据库里默认的内容打开,怎么解决?
数据库里有两个字段nianji和栏目
nianji lanmu
高一年级 算法与程序设计
高二年级 网络技术应用
高一年级 信息技术基础
高一年级 算法与程序设计
高二年级 多媒体技术应用
高三年级 人工智能现在要求treeview显示样式如下:
根结点(教学内容)
点击根结点后展开年级子结点(高一年级、高二年级、高三年级)
然后点击其中一个年级,相应年级的栏目就会显示,下面是我尝试做的,结果老是提示错误
index.aspx页面代码:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="ketang.WebForm1"%>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></iewc:TreeView></FONT></form>
</body>
</HTML>
index.aspx.vb页面内容如下:
Imports System.Data.OleDb
Imports System.data
Public Class WebForm1
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents TreeView1 As Microsoft.Web.UI.WebControls.TreeView '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
Dim conn As OleDbConnection
Dim s As string
Dim provider = "provider=microsoft.jet.oledb.4.0"
Dim database = "data source=" & Server.MapPath("data/ke.mdb")
conn = New OleDbConnection(provider & ";" & database)
conn.Open()
Dim datasetke As DataSet = New DataSet
Dim sql_ke As String = "select distinct nianji from lanmu group by nianji"
Dim adapterke As OleDbDataAdapter = New OleDbDataAdapter(sql_ke, conn)
adapterke.Fill(datasetke, "lanmu")
For i = 0 To datasetke.Tables(0).Rows.Count - 1
s = datasetke.Tables(0).Rows(i).Item(0)
TreeView1.Nodes.item(0).nodes.add(s)
Next
End Sub
上面我编的代码,只是先想试验一下,把年级加到treeview里,作为根结点下面的子结点,但提示错误如下:
C:\Inetpub\wwwroot\ketang\index.aspx.vb(41): 类型“String”的值无法转换为“Microsoft.Web.UI.WebControls.TreeNode”。要求以vb.net作为编写语言,帮我解决后,必首信给你分数,谢谢!
数据库里有两个字段nianji和栏目
nianji lanmu
高一年级 算法与程序设计
高二年级 网络技术应用
高一年级 信息技术基础
高一年级 算法与程序设计
高二年级 多媒体技术应用
高三年级 人工智能现在要求treeview显示样式如下:
根结点(教学内容)
点击根结点后展开年级子结点(高一年级、高二年级、高三年级)
然后点击其中一个年级,相应年级的栏目就会显示,下面是我尝试做的,结果老是提示错误
index.aspx页面代码:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="ketang.WebForm1"%>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></iewc:TreeView></FONT></form>
</body>
</HTML>
index.aspx.vb页面内容如下:
Imports System.Data.OleDb
Imports System.data
Public Class WebForm1
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents TreeView1 As Microsoft.Web.UI.WebControls.TreeView '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
Dim conn As OleDbConnection
Dim s As string
Dim provider = "provider=microsoft.jet.oledb.4.0"
Dim database = "data source=" & Server.MapPath("data/ke.mdb")
conn = New OleDbConnection(provider & ";" & database)
conn.Open()
Dim datasetke As DataSet = New DataSet
Dim sql_ke As String = "select distinct nianji from lanmu group by nianji"
Dim adapterke As OleDbDataAdapter = New OleDbDataAdapter(sql_ke, conn)
adapterke.Fill(datasetke, "lanmu")
For i = 0 To datasetke.Tables(0).Rows.Count - 1
s = datasetke.Tables(0).Rows(i).Item(0)
TreeView1.Nodes.item(0).nodes.add(s)
Next
End Sub
上面我编的代码,只是先想试验一下,把年级加到treeview里,作为根结点下面的子结点,但提示错误如下:
C:\Inetpub\wwwroot\ketang\index.aspx.vb(41): 类型“String”的值无法转换为“Microsoft.Web.UI.WebControls.TreeNode”。要求以vb.net作为编写语言,帮我解决后,必首信给你分数,谢谢!
解决方案 »
- ASP.NET技术请教
- 数据库表控制模块的调用流程
- 使用连接检测用户名 在线等
- 搞不懂一直搞不明白rss的作用。。高手可以进来看看吗?
- 请问datagrid如何设置成2列?
- 100分咨询个问题,这样的方法有效吗?????
- 客户端获取数据冲突的问题(在线等)
- 求助:::ServerVersion = “sqlconn.ServerVersion”引发了“System.InvalidOperationException”类型的异常(second_neil)
- .NET 怎么裁剪出不规则的图片
- 在asp.net中使用<%@ Import NameSpace="System.Data.SQL" %>时...
- 求救,关于模板列中放个,DropDownList的问题,急.....
- 新手的小问题,哪位高手指教一下。
//加上下面这一句
TreeNode node = New TreeNode(s)
//上面的改为下面这样
TreeView1.Nodes.item(0).nodes.add(node)
大东告诉我的,改完后,还是不行,我在vs 2003里做的,TreeNode node = New TreeNode(s),提示错误,不识别,
TreeView1.Nodes.item(0).nodes.add(s)
//上面的改为下面这样
TreeView1.Nodes.item(0).nodes.add(node),那这个node代表什么?,对node定义的时候要求定义成什么类型?
对清水无鱼,我只要有4级,根结点,然后是年级结点,然后是各科目结点,再就是具体内容结点,我该怎么设计这个菜单,急,在线等!!!
大东告诉我的,改完后,还是不行,我在vs 2003里做的,TreeNode node = New TreeNode(s),提示错误,不识别,
TreeView1.Nodes.item(0).nodes.add(s)
//上面的改为下面这样
TreeView1.Nodes.item(0).nodes.add(node),那这个node代表什么?,对node定义的时候要求定义成什么类型?
对清水无鱼,我只要有4级,根结点( 而且根结点不要从数据库里读,固定为"教学内容"),然后是年级结点,然后是各科目结点,再就是具体内容结点,我该怎么设计这个菜单,急,在线等!!!
SELECT TOP 100 PERCENT PowerID, PowerName, PowerUrl, UserCode, NodeCode, CASE WHEN len(NodeCode) = 2 THEN NULL ELSE substring(NodeCode, 0,
len(NodeCode) - 1) END AS ParentNodeCode
FROM dbo.TB_System_Power
ORDER BY NodeCode//****构造树
#region 菜单构建 public void SystemMenuBulite(ref TreeView TreView)
{
//****清空当前树的所有数据
TreView.Nodes.Clear(); //****创建一个节点
TreeNode TRNode = new TreeNode(); TRNode.Text = "后台管理";
TRNode.Target = "00000";
TRNode.Value = "后台管理"; //****添加节点到树中
TreView.Nodes.Add(TRNode);
//****展开一级目录
TreView.ExpandDepth = 1; //****重服务器上获取数据
DataSet DSet = new DataSet(); DBComTable.TBSystemUser mTBSystemUser = new DBComTable.TBSystemUser(); mTBSystemUser.SQLEx = " AND LEN(NODECODE)=2 ORDER BY ASC"; //****循环读取树根节点
DSet = (new WebServices.WebServices()).System_MustList_Filter(mTBSystemUser); foreach (DataRow dRow in DSet.Tables[0].Rows)
{
//****创建节点
TreeNode TRPNode = new TreeNode(); TRPNode.Text = dRow["NodeName"].ToString();
TRPNode.Target = dRow["NodeCode"].ToString();
TRPNode.Value = dRow["NodeCode"].ToString();
//****添加节点到树中
TRNode.ChildNodes.Add(TRPNode); //****加载节点的子节点数据
DillSystemTreeNodeChile(dRow["NodeCode"].ToString(), ref TRNode); } } private void DillSystemTreeNodeChile(string NodeCode, ref TreeNode PNode)
{
DBComTable.TBSystemUser mTBSystemUser = new DBComTable.TBSystemUser(); int intLen, intClen; if (NodeCode == null)
{
intClen = 0;
}
else
{
intClen = NodeCode.Length;
} intLen = intClen + 2; StringBuilder strApp = new StringBuilder(); string strTemp = ""; //*****构建获取子节点的SQL语句
strTemp = " AND (SUBSTRING(NODECODE," + intClen + ")='" + NodeCode + "' AND (LEN(NODECODE)='" + intLen + ")'"; strApp.Append(strTemp); strApp.Append(" ORDER BY NODECODE ASC");
mTBSystemUser.SQLEx = strApp.ToString(); DataSet DSet=new DataSet(); //****循环读取树根节点
DSet = (new WebServices.WebServices()).System_MustList_Filter(mTBSystemUser); foreach (DataRow dChileRow in DSet.Tables[0].Rows)
{
TreeNode TRChileNode = new TreeNode();
TRChileNode.Text = dChileRow["NodeName"].ToString();
TRChileNode.Target = dChileRow["NodeCode"].ToString();
TRChileNode.Value = dChileRow["NodeCode"].ToString(); //****添加子节点
PNode.ChildNodes.Add(TRChileNode); //*****自调用函数,加载下一级目录
DillSystemTreeNodeChile(dChileRow["NodeCode"].ToString(), ref TRChileNode);
} }
#endregion
//***把上面这一句话换成dim TRPNode as new TreeNode()
Dim conn As OleDbConnection
Dim s As String
Dim TRPNode As New TreeNode
Dim provider = "provider=microsoft.jet.oledb.4.0"
Dim database = "data source=" & Server.MapPath("data/ke.mdb")
conn = New OleDbConnection(provider & ";" & database)
conn.Open()
Dim datasetke As DataSet = New DataSet
Dim sql_ke As String = "select distinct nianji from lanmu group by nianji"
Dim adapterke As OleDbDataAdapter = New OleDbDataAdapter(sql_ke, conn)
adapterke.Fill(datasetke, "lanmu") For i = 0 To datasetke.Tables(0).Rows.Count - 1
s = datasetke.Tables(0).Rows(i).Item(0)
TreeView1.Nodes.Clear()
TRPNode.Text = s
TreeView1.Nodes.Add(TRPNode) Next End Sub
想把数据库ke.mdb里的年级字段内容作为treeview的结点,根结点是固定的,就是"教学内容",点开教学内容后,显示所有年级,怎么办,当我用以上程序时,出现提示错误为:说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 45: 'For i = 0 To datasetke.Tables(0).Rows.Count - 1
行 46: s = datasetke.Tables(0).Rows(i).Item(0)
行 47: TreeView1.Nodes.Clear()
行 48: TRPNode.Text = s
行 49: TreeView1.Nodes.Add(TRPNode)