如动网论坛,比如一级论坛为aaa,此论坛下属论坛为bbb,ccc,ddd一级论坛有个+号,点击后将展开bbb,ccc,ddd,并且+号变成-号;再点击-号时将收缩表格,隐藏bbb,ccc,ddd等表格。这个东东使用asp和javascript结合可以实现,现求ASP.NET实现的树型表格的代码,谢谢! 最好为vb的代码。昨天有网友说可以通过TreeView来实现,但是还没有看到这种表格的例子。期待高手指教!

解决方案 »

  1.   

    http://61.163.246.155/pro/XMLSelTree/或者你可以使用微软的TreeView,C#来初始化树,用脚本来操作节点
      

  2.   

    微软网站上的,就是csdn左边这个,我觉得效果很好
      

  3.   

    http://asp.net/iewebcontrols/download.aspx?tabindex=0&tabid=1
      

  4.   

    用treeview呀,我这儿有我写的代码,你参考一下.
      

  5.   

    一个表存储父子模块的情况:
    public class Tree : System.Web.UI.Page
    {
    protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
    string strcn = "workstation id=PROJECT3;packet size=4096;user id=sa;data source=\"PROJECT3\\PROJECT" +
    "3\";persist security info=False;initial catalog=tree; min pool size=2;max pool size=5"; private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    SqlConnection _Sqlconnection1 = new SqlConnection(strcn);
    string str1 = "select * from t_tree";
    _Sqlconnection1.Open();
    SqlCommand _Sqlcommand1 = new SqlCommand(str1,_Sqlconnection1);
    SqlDataAdapter dr=new SqlDataAdapter(_Sqlcommand1);
    DataSet da1=new DataSet();
    dr.Fill(da1);
    //ViewState  获取状态信息的字典,
    //这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。
    this.ViewState["ds"]=da1; 
    _Sqlconnection1.Close();
    Gettreestruct(0,(TreeNode)null);

    }
    /// <summary>
    /// 导航树的递归算法
    /// </summary>
    /// <param name="id"></param>
    /// <param name="t1"></param>
    public void Gettreestruct(int id,TreeNode t1)
    {
    DataSet da =(DataSet)this.ViewState["ds"]; 
    DataView trr = new DataView(da.Tables[0]);
    trr.RowFilter="[parentid]="+id;
    foreach(DataRowView row in trr)
    {
      TreeNode nod=new TreeNode();
    if(t1==null)
    {
    nod.Text=row["mytext"].ToString();
    TreeView1.Nodes.Add(nod);
    //Expanded属性决定是否展开树
    nod.Expanded = true;
    Gettreestruct(Int32.Parse(row["nodeid"].ToString()),nod);
    }
    else
    {
    nod.Text =row["mytext"].ToString();
    t1.Nodes.Add(nod);
    nod.Expanded = true;
    Gettreestruct(Int32.Parse(row["nodeid"].ToString()),nod);     
    } } }
    两个表关联存放父子模块的情况:
    public void LoadTree()
    {
    DataSet da =(DataSet)this.ViewState["ds"]; 
    int count=0;
    foreach(DataRow row in da.Tables["Main"].Rows)
    {

    TreeNode nod=new TreeNode() ;
    nod.Text=row["MainName"].ToString();
    this.TreeView1.Nodes.Add(nod); DataView trr = new DataView(da.Tables["Sub"]);
    trr.RowFilter="MainID='"+row["MainID"].ToString()+"'"; for(int i=0;i<trr.Count;i++)
    {
    TreeNode nod1=new TreeNode();
    nod1.Text=trr[i]["SubName"].ToString();
    this.TreeView1.Nodes[count].Nodes.Add(nod1);
    }
    count++;
    }
    }