一個惱人遞歸的問題?

代碼如下:

private string detailHtml = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("id");
            dt.Columns.Add("name");
            dt.Columns.Add("val");
            dt.Columns.Add("upid");
            dt.Rows.Add("1", "2009年", "2009年", "0");
            dt.Rows.Add("2", "2009Q1", "2009Q1", "1");
            dt.Rows.Add("3", "2009Q2", "2009Q2", "1");
           // dt.Rows.Add("4", "2009Q3", "2009Q3", "1");
            dt.Rows.Add("5", "200901", "200901", "3");
            dt.Rows.Add("6", "2010年", "2010年", "0");
            //dt.Rows.Add("7", "2010Q1", "2010Q1", "6");
            //dt.Rows.Add("8", "201001", "201001", "7");
            dt.Rows.Add("9", "2009001", "2009001", "5");
            dt.AcceptChanges();
            jsTree.InnerHtml = GetTreeHtml(dt);
        }
    }

    private string GetTreeHtml(DataTable dt)
    {
        string html = "<ul>{0}</ul>";
        DataView dv = new DataView(dt);
        dv.RowFilter = "upid=0";
        string roothtml = "";
        foreach (DataRowView dr in dv)
        {
            roothtml += "<li value='" + dr["val"].ToString() + "' style='margin-left:-28px;'><input type='checkbox' />"
                     + dr["name"].ToString() + GetDetailHtml(dt, dr["id"].ToString()) + "</li>";           
            detailHtml = "";
        }
        return string.Format(html, roothtml);
    }

    private string GetDetailHtml(DataTable dt ,string up_id)
    {
        DataView dv = new DataView(dt);
        dv.RowFilter = "upid=" + up_id;
        string html = "";       
        foreach (DataRowView dr in dv)
        {           
            detailHtml += "<li value='" + dr["val"].ToString() + "' style='margin-left:-28px;'><input type='checkbox' />"
                  + dr["name"].ToString() + "</li>";
            GetDetailHtml(dt, dr["id"].ToString());
        }
        html = "<ul>" + detailHtml + "</ul>"; 
        return html;
    }

運行的結果如下:

      2009年
         2009Q1
         2009Q2
         200901
         2009001
      2010年

正確的結果如下:

      2009年
         2009Q1
         2009Q2
              200901
                 2009001
      2010年

不知道怎麼修改,哪位大俠知道的告訴我一下,謝謝!

在此新春佳節來臨之際,祝博客園兄弟姐妹新年快樂,萬事如意!

www说
浏览 315回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP