protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
    }
    private Random rand = new Random();    [AjaxMethod()]
    public DataSet GetSubCategory(int iCategoryID)
    {
        DataSet ds = new DataSet();        SqlConnection conn =
            new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = string.Format(
            "SELECT CategoryID, CategoryName, FatherID, dbo.IsLeaf(CategoryID) as IsChild FROM Category WHERE FatherID = {0}",
            iCategoryID);
        SqlDataAdapter da = new SqlDataAdapter(cmd);        try
        {
            da.Fill(ds);
        }
        catch (SqlException)
        {
        }
        finally
        {
            conn.Close();
        }        System.Threading.Thread.Sleep(500 + rand.Next(1000));        return ds;
    }    [AjaxMethod()]
    public DataSet GetDocInfo(int iCategoryID)
    {
        DataSet ds = new DataSet();        SqlConnection conn =
            new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = string.Format(
            "SELECT id, author, title, convert(varchar(20), writetime, 120) as writetime, url FROM DocInfo WHERE id = {0}", iCategoryID);
        SqlDataAdapter da = new SqlDataAdapter(cmd);        try
        {
            da.Fill(ds);
        }
        catch (SqlException)
        {
        }
        finally
        {
            conn.Close();
        }        return ds;
    }    [AjaxMethod()]
    public DataSet GetDocInfoInCategory(int iCategoryID)
    {
        DataSet ds = new DataSet();        SqlConnection conn =
            new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = string.Format(
            "SELECT CategoryID, CategoryName, FatherID FROM Category WHERE FatherID = {0} AND dbo.IsLeaf(CategoryID) = 1", iCategoryID);
        SqlDataAdapter da = new SqlDataAdapter(cmd);        try
        {
            da.Fill(ds);
        }
        catch (SqlException)
        {
        }
        finally
        {
            conn.Close();
        }        return ds;
    }已经添加了引用

解决方案 »

  1.   

    function ExpandSubCategory(iCategoryID)
    {
    var li_father = document.getElementById("li_" + iCategoryID);
    if (li_father.getElementsByTagName("li").length > 0) //分类已下载
    {
    ChangeStatus(iCategoryID);
    displayDocList(iCategoryID);
    return;
    }

    li_father.className = "Opened";

    switchNote(iCategoryID, true);
    _Default.GetSubCategory(iCategoryID, GetSubCategory_callback);
    }

    function GetSubCategory_callback(response)
    {
    var dt = response.value.Tables[0];
    if (dt.Rows.length > 0)
    {
    var iCategoryID = dt.Rows[0].FatherID;
    }
    var li_father = document.getElementById("li_" + iCategoryID);
    var ul = document.createElement("ul");
    for (var i = 0;i < dt.Rows.length;i++)
    {
    if (dt.Rows[i].IsChild == 1) //叶子节点
    {
    var li = document.createElement("li");
    li.className = "Child";
    li.id = "li_" + dt.Rows[i].CategoryID;

    var img = document.createElement("img");
    img.id = dt.Rows[i].CategoryID;
    img.className = "s";
    img.src = "css/s.gif";

    var a = document.createElement("a");
    a.href = "javascript:OpenDocument('" + dt.Rows[i].CategoryID + "');";
    a.innerHTML = dt.Rows[i].CategoryName;
    }
    else
    {
    var li = document.createElement("li");
    li.className = "Closed";
    li.id = "li_" + dt.Rows[i].CategoryID;

    var img = document.createElement("img");
    img.id = dt.Rows[i].CategoryID;
    img.className = "s";
    img.src = "css/s.gif";
    img.onclick = function () {
    ExpandSubCategory(this.id);
    };
    img.alt = "展开/折叠";

    var a = document.createElement("a");
    a.href = "javascript:ExpandSubCategory(" +
    dt.Rows[i].CategoryID + ");";
    a.innerHTML = dt.Rows[i].CategoryName;
    }
    li.appendChild(img);
    li.appendChild(a);
    ul.appendChild(li);
    }
    li_father.appendChild(ul);

    displayDocList(iCategoryID);
    switchNote(iCategoryID, false);

    }

    function OpenDocument(iCategoryID)
    {
    var div_docContent = document.getElementById("docContent");
    var div_docList = document.getElementById("docList");

    div_docContent.style.display = "";
    div_docList.style.display = "none";

    _Default.GetDocInfo(iCategoryID, GetDocInfo_callback);
    }

    function GetDocInfo_callback(response)
    {
    var dr = response.value.Tables[0].Rows[0];
    if (dr)
    {
    var div_title = document.getElementById("title");
    var div_author = document.getElementById("author");
    var div_writetime = document.getElementById("writetime");
    var iFrm = document.getElementById("doc");

    div_title.innerHTML = dr.title;
    div_author.innerHTML = dr.author;
    div_writetime.innerHTML = dr.writetime;
    iFrm.src = dr.url;
    }
    }

    function ChangeStatus(iCategoryID)
    {
    var li_father = document.getElementById("li_" + iCategoryID);
    if (li_father.className == "Closed")
    {
    li_father.className = "Opened";
    }
    else
    {
    li_father.className = "Closed";
    }
    }

    function switchNote(iCategoryID, show)
    {
    var li_father = document.getElementById("li_" + iCategoryID);
    if (show)
    {
    var ul = document.createElement("ul");
    ul.id = "ul_note_" + iCategoryID;

    var note = document.createElement("li");
    note.className = "Child";

    var img = document.createElement("img");
    img.className = "s";
    img.src = "css/s.gif";

    var a = document.createElement("a");
    a.href = "javascript:void(0);";
    a.innerHTML = "请稍候...";

    note.appendChild(img);
    note.appendChild(a);
    ul.appendChild(note);
    li_father.appendChild(ul);
    }
    else
    {
    var ul = document.getElementById("ul_note_" + iCategoryID);
    if (ul)
    {
    li_father.removeChild(ul);
    }
    }
    }

    function displayDocList(iCategoryID)
    {
    var div_docContent = document.getElementById("docContent");
    var div_docList = document.getElementById("docList");

    div_docContent.style.display = "none";
    div_docList.style.display = "";
    div_docList.style.padding = 20;
    while (div_docList.childNodes.length > 0)
    {
    div_docList.removeChild(div_docList.childNodes[0]);
    }

    var dt = _Default.GetDocInfoInCategory(iCategoryID).value.Tables[0];
    if (dt)
    {
    for (var i = 0;i < dt.Rows.length;i++)
    {
    var a = document.createElement("a");
    a.href = "javascript:OpenDocument(" + dt.Rows[i].CategoryID + ");";
    a.innerHTML = "<font color=#1122aa size=2>" + dt.Rows[i].CategoryName + "</font>";

    var li = document.createElement("li");
    li.appendChild(a);

    var div = document.createElement("div");
    div.appendChild(li);

    div_docList.appendChild(div);
    }
    }
    }

    // 加载根节点
    var tree = document.getElementById("CategoryTree");
    var root = document.createElement("li");
    root.id = "li_0";
    tree.appendChild(root);

    // 加载页面时显示第一级分类
    ExpandSubCategory(0);
      

  2.   

    我的AjaxPro.2.dll和AjaxPro.dll引用的都是7.7.31.1
    代码无法成功实现但是当我把AjaxPro.dll(不是AjaxPro.2.dll)换成5.11.4.2时,成功实现!超级郁闷,其他简单的功能用AjaxPro.2.dll都可以实现。谁有关于AjaxPro.2.dll做的无刷新树的代码,发来看下好么[email protected]
    谢过!
      

  3.   

    会不会是版本的问题呢?
    楼主是.net2.0开发平台?
      

  4.   

    VS2005开发的,打过SP1的补丁了的