数据表结构如下:
classid     ParenteClassid
   1              A
   2
   3              1
   A
   4
比如.传入参数A,开始进行遍历.谢谢大家,请帮忙~

解决方案 »

  1.   

    function ShowMenu(Pid)
    sql="select * from Menus where ParentID="& Pid
    set rs=conn.execute(sql)
    strIndent = "  "
    do while not rs.eof
    if rs("ParentID")=0 then
    str = "<DIV ID='menu"& rs("ID") &"' Class='MenuItemIE2' OnClick='ShowHidden("& rs("ID") &","& rs("ID") &")' OnMouseOver='HighlightMenuItem("& rs("ID") &")' OnMouseOut='NormalMenuItem("& rs("ID") &")'>"
    str =str & strIndent
    str =str & "<IMG BORDER=0 ID='MenuItemImg"& rs("ID") &"'  SRC='../Images/menuplus.gif'>"
    str =str & rs("Txt")
    str =str & "</DIV>"
    response.write(str)
    else
    str = "<DIV ID='menu"& rs("ID") &"' CLASS='MenuItemIE' ONCLICK=top.MainFrame.location='"& rs("Url") &"' OnMouseOver='HighlightMenuItem("& rs("ID") &")' OnMouseOut='NormalMenuItem("& rs("ID") &")'>"
    str =str & strIndent & strIndent
    str =str & "<IMG BORDER=0 SRC='../images/transparent.gif' WIDTH=12 HEIGHT=12>"
    str =str & rs("Txt")
    str =str & "</DIV>"
    response.write(str)
    end if
    sql1="select ID from Menus where ParentID="& rs("ID")
    set rs1=conn.execute(sql1)
    if not rs1.eof then
    response.write("<div ID='show"& rs("ID") &"' style='display:none'>")
    ShowMenu(rs("ID"))
    response.write("</div>")
    end if
    set rs1=nothing
    rs.movenext
    loop
    set rs=nothing
    end function
      

  2.   

    这是一段ASP的代码,可能你初看不太理解!
    其实方法是这样的:
    1,传入参数,查找
    2,遍历所有找到的行
    3,如果行的内部还存在子ID,那么重新执行这个函数
      

  3.   

    如表数据已经从数据库里读入到:DataTable dt;创建一个结构和 dt 样的 DataTable;
    DataTable m_DataTable = new DataTable();
    DataColumn dc = null;dc = new DataColumn();
    dc.DataType = Type.GetType("System.String");
    dc.ColumnName = "classid";
    m_DataTable.Columns.Add(dc);dc = new DataColumn();
    dc.DataType = Type.GetType("System.String");
    dc.ColumnName = "ParenteClassid";
    m_DataTable.Columns.Add(dc);// 递归,把过滤出来的数据添加到新建的 m_DataTable 里。
    void FilterData(string classid)
    {
    DataRow[] foundRow = dt.Select("classid='" + classid + "'");
    for(int i=0;i<foundRow.Length;i++)
    {
    DataRow dr = m_DataTable.NewRow();
    dr["classid"]        = foundRow[i]["classid"].ToString();
    dr["ParenteClassid"] = foundRow[i]["ParenteClassid"].ToString(); m_DataTable.Rows.Add(dr);
    FilterData(dr["ParenteClassid"].ToString());
    }
    }
      

  4.   

    private void Bind()
    {
    string strSQL = "select * form Menus where ParenteClassid=''";
    DataSet myDS = ExecuteDataSet(strSQL);
    foreach(System.Data.DataRow row in myDS.Tables[0].Rows)
    {
    ListItem item = new ListItem(row["name"],row["name"]);
    //add(item);
    BindSub(row["classid"].ToString(),1);
    }
    }
    private string space="---------------------------------";
    private void BindSub(string parentid,int number)
    {

    string strSQL = "select * form Menus where ParenteClassid='" + parentid +"'";
    DataSet myDS = ExecuteDataSet(strSQL);
    foreach(System.Data.DataRow row in myDS.Tables[0].Rows)
    {
    //添加ListItem
    string name = "|"+ space.Substring(0,number) + row["name"];
    ListItem item = new ListItem(name,row["name"]);
    //add(item);
    BindSub(row["classid"].ToString(),number+1);
    }
    }
      

  5.   

    太明显了吧:
    private void DropDownListName_Load(object sender, System.EventArgs e)
    {
    DDList_TreeView.Items.Clear() ; ADHelper m_ADHelper = new ADHelper() ;
    DirectoryEntry m_DirectoryEntry = m_ADHelper.GetDiectoryEntryByLDAPDN("OU=oa") ; string m_Test = m_DirectoryEntry.Properties["ou"].Value.ToString() ;
    string m_Value = m_DirectoryEntry.Path ; //LDAP://skyctd/OU=oa,DC=skyctd,DC=com
    ListItem m_ListItem = new ListItem(m_Test, m_Value) ;
    DDList_TreeView.Items.Add(m_ListItem) ; string m_Temp = " ┼" ; foreach( DirectoryEntry m_ChildEntry in m_DirectoryEntry.Children)
    {
    if(m_ChildEntry.SchemaClassName.Equals("organizationalUnit"))
    {
    m_Test = m_ChildEntry.Properties["ou"].Value.ToString() ;
    m_Value = m_ChildEntry.Path ;
    m_ListItem = new ListItem(m_Temp + m_Test, m_Value) ;
    DDList_TreeView.Items.Add(m_ListItem) ;
    m_Levels = 1 ;
    CreateTree(m_ChildEntry) ;
    }
    }
    // Response.Write("Success!") ;
    } private void CreateTree(DirectoryEntry destDirectoryEntry)
    {
    m_Levels++ ;
    string m_Temp = " " ;
    for(int i = 1; i < m_Levels; i++)
    {
    m_Temp = m_Temp + "  " ;
    }
    m_Temp = m_Temp + "├" ;
    foreach( DirectoryEntry m_ChildEntry in destDirectoryEntry.Children)
    {
    if(m_ChildEntry.SchemaClassName.Equals("organizationalUnit"))
    {
    string m_Test = m_ChildEntry.Properties["ou"].Value.ToString() ;
    string m_Value = m_ChildEntry.Properties["distinguishedName"].Value.ToString() ;//LDAP://skyctd/OU=oa,DC=skyctd,DC=com
    ListItem m_ListItem = new ListItem(m_Temp + m_Test, m_Value) ;
    DDList_TreeView.Items.Add(m_ListItem) ;
    CreateTree(m_ChildEntry) ;
    }
    }
    }