小山版用Ajax实现了无级数,但很多网友对小山的数都无法运行起来,这两天研究了一下,运行了起来。代码见:http://blog.csdn.net/21aspnet/article/details/1534279,把用到的相关知识和大家分享一下。
题外话:
若有以前的同事看到这个,可以替换我原来用递归算法实现的树,当子数节点变多时,递归是全部加载树,再显示页面,网页出现阻塞。这两天学了一些AJAX,特地改写了树。
----------------------
1.首先用到的是AjaxPro框架,如何部署框加,请参见http://www.cnblogs.com/lexus/archive/2007/11/29/977281.html
2.代码见:http://www.cnblogs.com/singlepine/archive/2006/11/23/434373.html 中的第4步骤可以合并到第2步骤中的CS代码
CS代码如下:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
AjaxPro;
using
System.Data;
using
System.Data.SqlClient;
using
ajaxexcise;
namespace
ajaxexcise
{
public
partial
class
Tree : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(
typeof
(Tree));
}
[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public
static
DataSet GetSubCategory(
int
iCategoryID)
{
string
sql =
string
.Format(
"SELECT CategoryID, CategoryName, FatherID, dbo.IsLeaf(CategoryID) as IsChild FROM Category WHERE FatherID = {0}"
, iCategoryID);
return
GetDataSet(sql);
}
[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public
static
DataSet GetFormsList(
int
iCategoryID)
{
string
sql =
string
.Format(
"SELECT * FROM forms WHERE form_category_id = {0}"
, iCategoryID);
return
GetDataSet(sql);
}
public
static
DataSet GetDataSet(
string
sql)
{
string
ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[
"ConnectionString1"
].ToString();
SqlDataAdapter sda =
new
SqlDataAdapter(sql, ConnectionString);
DataSet ds =
new
DataSet();
sda.Fill(ds);
if
(ds !=
null
)
return
ds;
else
return
null
;
}
}
}
3.数据库说明:
![](https://img-my.csdn.net/uploads/201205/17/1337240301_5537.PNG)
![](https://img-my.csdn.net/uploads/201205/17/1337240333_2032.PNG)
4.运行结果
![](https://img-my.csdn.net/uploads/201205/17/1337240426_9243.PNG)