1. Créer un compte aspx
html ici
http://www.w3.org/1999/xhtml " >
classe partielle publique Pages_Home_HomePage : System.Web.UI.Page
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
Utility.RegisterTypeForAjax(typeof(AjaxMethod));
}
}3.建立一个tree.css的css样式
un
{}{
décoration de texte : aucune ;
}
a,a: visité
{}{
couleur : #000 ;
arrière-plan : hériter ;
}
corps
{}{
marge : 0 ;
remplissage : 20 px ;
police:12px tahoma,宋体,sans-serif;
}
dt
{}{
taille de police : 22 px ;
poids de la police : gras ;
marge :0 0 0 15px ;
}
jj
{}{
marge :0 0 0 15px ;
}
h4
{}{
marge : 0 ;
remplissage : 0 ;
taille de police : 18 px ;
texte-align:centre;
}
p
{}{
marge : 0 ;
remplissage :0 0 0 18px ;
}
pa, pa: visité
{}{
couleur : #00f ;
arrière-plan : hériter ;
}
.TreeMenu img.s
{}{
curseur:main;
alignement vertical : milieu ;
}
.TreeMenu ul
{}{
remplissage : 0 ;
}
.TreeMenu li
{}{
style de liste : aucun ;
remplissage : 0 ;
}
.Fermé ul
{}{
affichage : aucun ;
}
.Imgs d'enfant.s
{}{
arrière-plan : aucun ;
curseur : par défaut ;
}
#CategoryTree ul
{}{
marge :0 0 0 17px ;
}
#CategoryTree img.s
{}{
largeur : 34 px ;
hauteur : 18 px ;
}
#CategoryTree .Ouvert img.s
{}{
background:url(skin3/opened.gif) sans répétition 0 1px;
}
#CategoryTree .Fermé img.s
{}{
background:url(skin3/closed.gif) sans répétition 0 1px;
}
#CategoryTree .Child img.s
{}{
background:url(skin3/child.gif) sans répétition 13px 2px;
}
#ArbreCatégorie
{}{
flotteur : gauche ;
largeur : 249 px ;
bordure : 1px solide #99BEEF ;
arrière-plan :#D2E4FC ;
couleur:hériter;
marge : 3 px ;
remplissage : 3 px ;
hauteur : 600 px ;
}
4. Méthode Ajax
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Data.SqlClient ;
en utilisant System.Configuration ;
en utilisant System.Web ;
en utilisant System.Web.Security ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.WebControls.WebParts ;
en utilisant System.Web.UI.HtmlControls ;
en utilisant AjaxPro ;
/**////
/// Description récapitulative d'AjaxMethod
///
classe publique AjaxMethod
{}{
méthode Ajax publique()
{
//
// TODO : Ajouter la logique du constructeur ici
//
}
[AjaxMethod (HttpSessionStateRequirement.ReadWrite)]
DataSet statique public GetSubCategory (int iCategoryID)
{}{
string sql = string.Format("SELECT CategoryID, CategoryName, FatherID, dbo.IsLeaf(CategoryID) as IsChild FROM Category WHERE FatherID = {0}", iCategoryID);
retourner GetDataSet(sql);
}
[AjaxMethod (HttpSessionStateRequirement.ReadWrite)]
DataSet statique public GetFormsList (int iCategoryID)
{}{
string sql = string.Format("SELECT * FROM formulaires WHERE form_category_id = {0}", iCategoryID);
retourner GetDataSet(sql);
}
chaîne statique publique ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
DataSet statique public GetDataSet (string sql)
{}{
SqlDataAdapter sda = new SqlDataAdapter(sql, ConnectionString);
DataSetds = new DataSet();
sda.Fill(ds);
si (ds != nul)
retourner ds ;
autre
renvoie null ;
}
}5.sql脚本
s'il existe (sélectionnez * dans dbo.sysobjects où id = object_id(N'[dbo].[Category]') et OBJECTPROPERTY(id, N'IsUserTable') = 1)
déposer la table [dbo].[Catégorie]
GO
s'il existe (sélectionnez * dans dbo.sysobjects où id = object_id(N'[dbo].[Forms]') et OBJECTPROPERTY(id, N'IsUserTable') = 1)
déposer la table [dbo].[Formulaires]
ALLER
CRÉER UNE TABLE [dbo].[Catégorie] (
[CategoryID] [int] IDENTITÉ (1, 1) NON NULL ,
[CategoryName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[IDPère] [int] NULL
) SUR [PRIMAIRE]
ALLER
CRÉER UNE TABLE [dbo].[Formulaires] (
[FormID] [int] IDENTITÉ (1, 1) NON NULL ,
[NomFormulaire] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[FormUrl] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Form_category_id] [int] NULL ,
[cible] [caractère] (10) COLLATE Chinese_PRC_CI_AS NULL
) SUR [PRIMAIRE]
ALLER
CRÉER UNE FONCTION IsLeaf (@cat_id int)
RETOURS entier COMME
BEGIN
déclare @count int
select @count = (sélectionnez count(*) dans la catégorie où FatherID=@cat_id )
si (@count=0)
retour 1
retour 0
FIN