Dim dv As New DataView()==>DataView dv= New DataView()
sub end sub==>{}

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2903/2903073.xml?temp=.6210443
      

  2.   

    http://expert.csdn.net/Expert/topicview.asp?id=2887346
      

  3.   

    看一下我的代码,库结果根你的一样,不过我是在WindowsForm下的,如果有问题,可以发信息给我
    /// <summary>
    /// 加载树节点
    /// </summary>
    private void LoadTreeNode()
    {
    try
    {
    treeView.ImageList=this.imageList1;
    //加载树节点
    LoadTreeView.InitTree(UserParameter.myDataset.Tables["treeNode"],"NodeID","ParentID","NodeName",treeView.Nodes,RootNodeTag);
    //加载树节点图片
    LoadTreeView.LoadTreeNodeImage(treeView,imageList1,NodeImageMode);
    }
    catch(Exception de)
    {
    MessageBox.Show(this,de.Message,"error!",MessageBoxButtons.OK,MessageBoxIcon.Stop);
    Application.Exit();
    }
    }using System;
    using System.Data;
    using System.Drawing;
    using System.Collections;
    using System.Windows.Forms;
    using System.IO;namespace WindowsApplicationModel
    {
    /// <summary>
    /// LoadTreeView 的摘要说明。
    /// </summary>
    public class myTreeNode:System.Windows.Forms.TreeNode 
    {
    public int ID;
    } public class LoadTreeView
    {
    public System.Windows.Forms.BindingManagerBase myBindView;
    private ArrayList treeNode=new ArrayList();
    public static bool IsFind=false;
    public static ArrayList FindNodeArray=new ArrayList(); public LoadTreeView()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }

    /// <summary>
    /// 加载树节点。建树的基本思路是:从根节点开始递归调用显示子树。
    /// </summary>
    /// <param name="dt">是DataTable类型的保存树节点的数据表</param>
    /// <param name="nodeID">数据表中保存节点的列名称</param>
    /// <param name="parentID">数据表中保存节点父节点的列名称</param>
    /// <param name="nodeName">数据表中保存节点名称的列名称</param>
    /// <param name="treeNodeCollection">表示TreeView.Nodes对象的集合</param>
    /// <param name="rootNodeTag">定义根节点的父节点的标记</param>
    //法一:用DataView
    public static void InitTree(DataTable dt,string nodeID,string parentID,string nodeName,TreeNodeCollection treeNodeCollection,string rootNodeTag)
    {
    try
    {
    TreeNode tmpNode;
    DataView dv=new DataView();
    dv.Table=dt;
    if (rootNodeTag!=""||rootNodeTag!=null)
    dv.RowFilter=parentID+"='"+rootNodeTag+"'";
    foreach(DataRowView drv in dv)
    {
    tmpNode=new TreeNode();
    tmpNode.Text=drv[nodeName].ToString();
    tmpNode.Tag=drv[nodeID];
    string father=drv[nodeID].ToString();
    treeNodeCollection.Add(tmpNode);
    InitTree(dt,nodeID,parentID,nodeName,tmpNode.Nodes,father);
    }
    }
    catch(Exception te)
    {
    MessageBox.Show(te.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Warning);
    }
    } /// <summary>
    /// 加载TreeView节点图片。
    /// </summary>
    /// <param name="treeView">是要加载的TreeView对象</param>
    /// <param name="imageList">保存图片的ImageList控件</param>
    /// <param name="ShowMode">是节点图标的显示方式:false,以节点的索引找图标,true,以节点的层次深度找图标。</param>
    public static void LoadTreeNodeImage(TreeView treeView,ImageList imageList,bool ShowMode)
    {
    if (imageList.Images.Count==0) 
    {
    treeView.ImageList=null;
    return;
    }
    TreeNodeCollection nodes=treeView.Nodes;
    foreach(TreeNode tn in nodes)
    {
    LoadTreeNodeImage(tn,imageList,ShowMode);
    }
    } /// <summary>
    /// 加载TreeNode图片。
    /// </summary>
    /// <param name="treeNode">是要加载的TreeNode对象</param>
    /// <param name="image">保存图片的ImageList控件</param>
    /// <param name="showMode">是节点图标的显示方式:false,以节点的索引找图标,true,以节点的层次深度找图标。</param>
    public static void LoadTreeNodeImage(TreeNode treeNode,ImageList image,bool showMode) 

    int level = 0; 
    if (showMode)
    {
    string path=treeNode.FullPath;
    TreeNode tmpNode=treeNode;
    //这句话是:tmpNode为当前节点,tmpNode=tmpNode.Parent是返回到上一层节点,(tmpNode = tmpNode.Parent) != null为即返回到根节点时,刚根节点的parent是null;
    while ((tmpNode = tmpNode.Parent) != null) level++; 
    }
    else
    level=treeNode.Index;
    level = level<image.Images.Count?level:image.Images.Count-1;
    treeNode.ImageIndex=level;
    treeNode.SelectedImageIndex=level;
    foreach(TreeNode tn in treeNode.Nodes)
    LoadTreeNodeImage(tn,image,showMode);
    }
            }
    }
      

  4.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;namespace WebApplication1
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected Microsoft.Web.UI.WebControls.TreeView TreeView;

    private void Page_Load(object sender, System.EventArgs e)
    {
     
    SqlDataAdapter Adapter = new SqlDataAdapter("SELECT * FROM system_menu where parentid=0","server=localhost;database=treeview;uid=sa;pwd=");
    DataSet ds = new DataSet ();
                Adapter.Fill(ds,"system_menu");
      
     

                DataTable table =ds.Tables[0];
    Microsoft.Web.UI.WebControls.TreeNode  tempnode = new Microsoft.Web.UI.WebControls.TreeNode(); foreach (DataRow row in table.Rows)  
               
    tempnode.Text = System.Convert.ToString(row["name"]);
    1-----//tempnode.ID =   System.Convert.ToString(row["ID"]);;
    tempnode.CheckBox = true;
    tempnode.NavigateUrl= "http://www.sina.com.cn";
    this.TreeView.Nodes.Add(tempnode); 
     2----//Response.Write(row["name"].ToString() + "<br>");
     
    }
     就上面的代码,我想把他改成依次把数据集里的数据生成一个树型菜单.
    注释1:总是提示"F:\树型菜单\tree_ORACLE\WebApplication1\WebForm1.aspx.cs(37): 名称“row”在类或命名空间“WebApplication1.WebForm1”中不存在"
    注释2:用这句能显示全部记录.但用上面的树的代码,确总是只能生成一个,节点.怎么怎么回事?
      

  5.   

    一个读表的方法和一个递归的方法,很容易看懂
    //从表中读数据准备创建树
    private TreeNode readTableToTree()
    {
    TreeNode rootNode=new TreeNode("FAQ列表");
    DictionaryEntry dic=new DictionaryEntry(0,0); //(ID,类别)
    rootNode.Tag=dic;
    sqlStr="select * from FAQ"; table=ado.exSqlReturnTable(sqlStr);
    this.creatTree(ref rootNode,0,ref table);
    return rootNode;
    }
    //创建树
    private void creatTree(ref TreeNode root,int parentID,ref DataTable table)
    {
    DataRow[] rows=table.Select("parentID=" + parentID);
    foreach(DataRow row in rows)
    {
    TreeNode rootNode = new TreeNode((string)row["title"]);
    DictionaryEntry dic=new DictionaryEntry(row["ID"],row["type"]);
    rootNode.Tag=dic;
    if((int)row["type"]==0)
    {
    rootNode.ImageIndex=0;
    }
    else
    {
    rootNode.ImageIndex=2;
    }
    root.Nodes.Add(rootNode);
    this.creatTree(ref rootNode,(int)row["ID"],ref table);
    }
    }
      

  6.   

    你如果这样做的话,页面的刷新就会很频繁的,这样我觉得不可取。你可以生成一个特定各式的xml文件和treeview绑在一起。或者,在页面第一次载入的时候生成整个treeview(注:autopostback 属性要设置为false).这样就不会平凡的刷新页面了。