1.建立一个aspx页面
html
http://www.w3.org/1999/xhtml " >
función GetSubCategory_callback (respuesta)
{
var dt = respuesta.valor.Tablas[0];
si (dt.Filas.longitud > 0)
{
var iCategoryID = dt.Rows[0].FatherID;
}
var li_father = el("li_" + iCategoryID);
var ul = document.createElement("ul");
para (var i = 0;i < dt.Rows.length;i++)
{
if (dt.Rows[i].IsChild == 1) //叶子节点
{
var li = document.createElement("li");
li.className = "Niño";
li.id = "li_" + dt.Rows[i].CategoryID;
var img = document.createElement("img");
img.id = dt.Rows[i].CategoryID;
img.className = "s";
img.src = "../../Styles/tree_css/s.gif";
var a = document.createElement("a");
var id = dt.Rows[i].CategoryID;
a.onmouseover = función()
{
Imagen de vista previa(id);
};
a.href = "javascript:OpenDocument('" + dt.Rows[i].CategoryID + "');";
a.innerHTML = dt.Rows[i].CategoryName;
}
demás
{
var li = document.createElement("li");
li.className = "Cerrado";
li.id = "li_" + dt.Rows[i].CategoryID;
var img = document.createElement("img");
img.id = dt.Rows[i].CategoryID;
img.className = "s";
img.src = "../../Styles/tree_css/s.gif";
img.onclick = función () {
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);
switchNote(iCategoryID, falso);
}
// 叶子节点的单击响应函数
función OpenDocument (iCategoryID)
{
// 预加载信息
PreloadFormUrl(iCategoríaID);
}
función Imagen previa (iCategoryID)
{
}
función CambiarEstado(iCategoríaID)
{
var li_father = el("li_" + iCategoryID);
if (li_father.className == "Cerrado")
{
li_father.className = "Abierto";
}
demás
{
li_father.className = "Cerrado";
}
}
función switchNote(iCategoryID, mostrar)
{
var li_father = el("li_" + iCategoryID);
si (mostrar)
{
var ul = document.createElement("ul");
ul.id = "ul_note_" + iCategoryID;
var nota = document.createElement("li");
note.className = "Niño";
var img = document.createElement("img");
img.className = "s";
img.src = "../../Styles/tree_css/s.gif";
var a = document.createElement("a");
a.href = "javascript:void(0);";
a.innerHTML = "请稍候";
nota.appendChild(img);
nota.appendChild(a);
ul.appendChild(nota);
li_father.appendChild(ul);
}
demás
{
var ul = el("ul_note_" + iCategoryID);
si (ul)
{
li_father.removeChild(ul);
}
}
}
// 加载根节点
var árbol = el("CategoríaÁrbol");
var raíz = document.createElement("li");
raíz.id = "li_0";
árbol.appendChild(raíz);
// 加载页面时显示第一级分类
ExpandirSubCategoría(0);
función PreloadFormUrl (iCategoryID)
{
// 采用同步调用的方式获取图片的信息
var ds = AjaxMethod.GetFormsList(iCategoryID).valor;
// 如果返回了结果
si (ds)
{
// 判断数据表是否不为空
si (ds.Tables[0].Filas.longitud > 0)
{
// 返回的信息数据表
dt = ds.Tables[0];
el("furl").src = dt.Rows[0].FormUrl;
}
else // 分类下没有
{
}
}
}
2.cs代码
usando Sistema;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando AjaxPro;
clase parcial pública Pages_Home_HomePage: System.Web.UI.Page
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
Utility.RegisterTypeForAjax(typeof(AjaxMethod));
}
}3.建立一个tree.css的css样式
a
{}{
decoración de texto: ninguna;
}
a,a:visitado
{}{
color:#000;
antecedentes: heredar;
}
cuerpo
{}{
margen:0;
relleno: 20px;
fuente: 12px tahoma,宋体,sans-serif;
}
dt
{}{
tamaño de fuente: 22px;
peso de fuente: negrita;
margen:0 0 0 15px;
}
dd
{}{
margen:0 0 0 15px;
}
h4
{}{
margen:0;
relleno: 0;
tamaño de fuente: 18px;
alineación de texto:centro;
}
pag
{}{
margen:0;
relleno:0 0 0 18px;
}
pa,pa:visitado
{}{
color:#00f;
antecedentes: heredar;
}
.TreeMenu img.s
{}{
cursor:mano;
alineación vertical: medio;
}
.TreeMenu ul
{}{
relleno: 0;
}
.TreeMenu li
{}{
estilo de lista: ninguno;
relleno: 0;
}
.ul cerrada
{}{
pantalla: ninguna;
}
.img.s infantiles
{}{
antecedentes: ninguno;
cursor: predeterminado;
}
#CategoryTree ul
{}{
margen:0 0 0 17px;
}
#Árbol de categorías img.s
{}{
ancho: 34px;
altura: 18 píxeles;
}
#CategoryTree .Imágenes abiertas
{}{
fondo:url(skin3/opened.gif) sin repetición 0 1px;
}
#CategoryTree .Cerrado img.s
{}{
fondo:url(skin3/closed.gif) sin repetición 0 1px;
}
#CategoryTree .Imágenes infantiles
{}{
fondo:url(skin3/child.gif) sin repetición 13px 2px;
}
#Árbol de categorías
{}{
flotador: izquierda;
ancho: 249px;
borde: 1px sólido #99BEEF;
antecedentes:#D2E4FC;
color:heredar;
margen: 3px;
relleno: 3px;
altura: 600 px;
}
4.建立一个类Método Ajax
usando Sistema;
usando System.Data;
usando System.Data.SqlClient;
usando System.Configuration;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando AjaxPro;
/**////
/// Descripción resumida de AjaxMethod
///
método Ajax de clase pública
{}{
método público Ajax()
{
//
// TODO: Agregar lógica de constructor aquí
//
}
[Método Ajax (HttpSessionStateRequirement.ReadWrite)]
Conjunto de datos estático público GetSubCategory (int iCategoryID)
{}{
string sql = string.Format("SELECT CategoryID, CategoryName, FatherID, dbo.IsLeaf(CategoryID) as IsChild FROM Category WHERE FatherID = {0}", iCategoryID);
devolver GetDataSet(sql);
}
[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
Conjunto de datos estático público GetFormsList (int iCategoryID)
{}{
string sql = string.Format("SELECCIONAR * DE formularios DONDE form_category_id = {0}", iCategoryID);
devolver GetDataSet(sql);
}
cadena estática pública ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
Conjunto de datos estático público GetDataSet (cadena sql)
{}{
SqlDataAdapter sda = nuevo SqlDataAdapter(sql, ConnectionString);
Conjunto de datos ds = nuevo Conjunto de datos();
sda.Fill(ds);
si (ds! = nulo)
devolver ds;
demás
devolver nulo;
}
}5.sql脚本
si existe (seleccione * de dbo.sysobjects donde id = object_id(N'[dbo].[Categoría]') y OBJECTPROPERTY(id, N'IsUserTable') = 1)
soltar tabla [dbo].[Categoría]
IR
si existe (seleccione * de dbo.sysobjects donde id = object_id(N'[dbo].[Forms]') y OBJECTPROPERTY(id, N'IsUserTable') = 1)
soltar tabla [dbo].[Formularios]
IR
A CREAR TABLA [dbo].[Categoría] (
[CategoryID] [int] IDENTIDAD (1, 1) NO NULL,
[Nombre de categoría] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
[ID del padre] [int] NULL
) EN [PRIMARIO]
IR
A CREAR TABLA [dbo].[Formularios] (
[FormID] [int] IDENTIDAD (1, 1) NO NULL,
[Nombre del formulario] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[FormUrl] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[Form_category_id] [int] NULL,
[objetivo] [carácter] (10) COLLATE Chinese_PRC_CI_AS NULL
) EN [PRIMARIO]
IR
CREAR FUNCIÓN IsLeaf (@cat_id int)
DEVOLUCIONES ent COMO
COMENZAR
declarar @count int
seleccione @count = (seleccione count(*) de la categoría donde FatherID=@cat_id )
si (@cuenta=0)
regresar 1
devolver 0
FINAL