您的位置:首页 > 运维架构

DropDownList 无限级分类 树状显示 (递归)

2009-09-17 10:30 525 查看


---代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlTstBind(1,0,"");

}
}
protected void ddlTstBind(int rankid,int supid,string str)
{
if(supid != 0)
{
str += "---";
}
int rank = Convert.ToInt32(DBUtility.DbHelperSQL.GetSingle("select max(tRank) from tst"));
DataTable dt = DBUtility.DbHelperSQL.Query("select * from tst where tRank = '" + rankid + "' and tSup = '"+supid+"' Order by tId Asc").Tables[0];
foreach (DataRow rows in dt.Rows)
{
rankid = Convert.ToInt32(rows["tRank"])+1;
supid = Convert.ToInt32(rows["tId"]);
ListItem li = new ListItem();
li.Text = str + rows["tName"].ToString();
li.Value = rows["tId"].ToString();
ddlTst.Items.Add(li);
if (rankid > rank)
{
}
else
{
ddlTstBind(rankid,supid,str);
}
}

}

protected void Button1_Click(object sender, EventArgs e)
{
if (ddlTst.SelectedValue == "0")
{
if (DBUtility.DbHelperSQL.ExecuteSql("insert into tst(tName,tRank,tSup) values('" + txtName.Text.ToString().Trim() + "','1','0')") > 0)
{
Response.Write("添加最高级别成功!");
}
else
{
Response.Write("添加最高级别成功!");
}
}
else
{
int id = Convert.ToInt32(ddlTst.SelectedValue);
int rank = Convert.ToInt32(DBUtility.DbHelperSQL.GetSingle("select tRank from tst where tId='"+id+"'"))+1;
if (DBUtility.DbHelperSQL.ExecuteSql("insert into tst(tName,tRank,tSup) values('" + txtName.Text.ToString().Trim() + "','" + rank + "','" + id + "')") > 0)
{
Response.Write("添加" + rank.ToString() + "级类别成功!");
}
else
{
Response.Write("添加" + rank.ToString() + "级类别成功!");
}
}

txtName.Text = "";
ddlTstBind(1, 0, "");
}

---建库脚本

create table tst

(
tId int identity(1,1), --标识列
tName varchar(50), --列名
tRank int, --当前级别
tSup int --所属上级类别的标识
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: