初次使用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作为编写语言,帮我解决后,必首信给你分数,谢谢!

解决方案 »

  1.   

    s = datasetke.Tables(0).Rows(i).Item(0)
    //加上下面这一句
    TreeNode node =  New TreeNode(s)
      

  2.   

    TreeView1.Nodes.item(0).nodes.add(s)
    //上面的改为下面这样
    TreeView1.Nodes.item(0).nodes.add(node)
      

  3.   

    首先感谢两位
    大东告诉我的,改完后,还是不行,我在vs 2003里做的,TreeNode node =  New TreeNode(s),提示错误,不识别,
    TreeView1.Nodes.item(0).nodes.add(s)
    //上面的改为下面这样
    TreeView1.Nodes.item(0).nodes.add(node),那这个node代表什么?,对node定义的时候要求定义成什么类型?
    对清水无鱼,我只要有4级,根结点,然后是年级结点,然后是各科目结点,再就是具体内容结点,我该怎么设计这个菜单,急,在线等!!!
      

  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级,根结点( 而且根结点不要从数据库里读,固定为"教学内容"),然后是年级结点,然后是各科目结点,再就是具体内容结点,我该怎么设计这个菜单,急,在线等!!!
      

  5.   

    //***创建一个SQL,设置父节点
    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
      

  6.   

    楼上的,你用的是c#,我用的vb.net,在vb.net里使用TreeNode  TRPNode  =  new  TreeNode();提示错误,哎,怎么办,急呀!!!
      

  7.   

    TreeNode  TRPNode  =  new  TreeNode();
    //***把上面这一句话换成dim TRPNode as new TreeNode()
      

  8.   

    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 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)