日期:2014-05-17  浏览次数:20865 次

DataTable循环找出该节点下的所有子节点

数据表tab有两个字段:id和up_id
id   up_id
1       0
2       1
3       1
4       2

我现在要找出id为1下面的所有子节点,包括子节点下面的子节点,这里的子节点包含(2,3,4)
我的代码如下,运行时出现死循环,求指点。
    public partial class test : System.Web.UI.Page
    {
        string nodes = string.Empty;
        DataTable dt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = ConfigurationManager.ConnectionStrings["connStr"].ToString();
            SqlConnection conn = new SqlConnection(str);
            SqlDataAdapter adp = new SqlDataAdapter("select * from tab", conn);
            adp.Fill(dt);
            GetAllNodes("1");
            Response.Write(nodes);

        }
        private void GetAllNodes(string id)
        {
            DataRow[] drs = dt.Select("up_id=" + id);
            if (drs.Length <= 0) return;
            foreach (DataRow dr in drs)
            {
                nodes += dr["id"].ToString() + ",";
                GetAllNodes(dr["up_id"].ToString());
            }
        }
    }
c#

------解决方案--------------------
  GetAllNodes(dr["up_id"].ToString());
===》

  GetAllNodes(dr["id"].ToString());
------解决方案--------------------
GetAllNodes(dr["up_id"].ToString());

dr["id"]
------解决方案--------------------
递归死循环,这里修改一下:GetAllNodes(dr["up_id"].ToString());》GetAllNodes(dr["id"].ToString());