62,052
社区成员
发帖
与我相关
我的任务
分享
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function show(id, obj) {
if (obj) {
if (obj.isShow == 'true') {
$('[parentID="' + id + '"]').hide();
var el = $('#tb')[0].rows;
var index = -1, end = -1;
for (var i = 0; i < el.length; i++) {
if (el[i] == obj) {
index = i;
}
if (i > index && index > -1) {
if (el[i].parentID == obj.parentID) {
end = i;
break;
}
}
}
if (obj.parentID == 0 && end == -1) {
end = el.length - 1;
}
for (var i = index + 1; i < end; i++) {
$(el[i]).hide();
}
obj.isShow = 'false';
}
else {
$('[parentID="' + id + '"]').show();
obj.isShow = 'true';
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<%=html %>
</form>
</body>
</html>
using System.Data;
using System.Data.SqlClient;
using System.Text;
protected string html;
private DataTable GetDataTableByParentID(int parentID)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection("server=.;uid=xxx;pwd=xxx;database=Test"))
{
SqlDataAdapter sda = new SqlDataAdapter("select * from tableTree where ParentID=@ParentID", con);
sda.SelectCommand.Parameters.Add(new SqlParameter("@ParentID",parentID));
DataSet ds = new DataSet();
sda.Fill(ds, "tableTree");
if (ds.Tables.Contains("tableTree"))
{
dt = ds.Tables["tableTree"];
}
}
return dt;
}
private string Recursive(DataRow dr,int rowNum)
{
if (dr == null)
{
return "";
}
StringBuilder sb = new StringBuilder();
int parentID;
string parentIDStr = dr["tID"] == null ? "-1" : dr["tID"].ToString();
int.TryParse(parentIDStr, out parentID);
DataTable dt = GetDataTableByParentID(parentID);
if (dt.Rows.Count > 0)
{
string nbsp = "";
for (int i = 0; i < rowNum; i++)
{
nbsp += " ";
}
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.AppendFormat("<tr parentID='{0}' rootID='' isShow='false'style='display:none;' onclick=\"show('{1}',this);\" >", dt.Rows[i]["ParentID"], dt.Rows[i]["tID"]);
sb.AppendFormat("<td width='50%'>{2}-{0}</td><td width='25%'>{1}</td><td width='25%'>0</td></tr>", dt.Rows[i]["Title"], dt.Rows[i]["tID"], nbsp);
sb.Append(Recursive(dt.Rows[i], rowNum + 1));
}
}
else
{
}
return sb.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = GetDataTableByParentID(0);
StringBuilder sb = new StringBuilder();
sb.Append("<table id='tb' width='100%'><tr><td>分类名称</td><td>商品数量</td><td>数量单位</td></tr>");
foreach (DataRow dr in dt.Rows)
{
sb.AppendFormat("<tr parentID='{0}' isShow='false' onclick=\"show('{1}',this);\" >", dr["ParentID"], dr["tID"]);
sb.AppendFormat("<td width='50%'>-{0}</td><td width='25%'>{1}</td><td width='25%'>0</td></tr>", dr["Title"], dr["tID"]);
sb.Append(Recursive(dr, 1));
}
sb.Append("</table>");
html = sb.ToString();
}
create table tableTree
(
tID int identity(1,1) primary key,
Title varchar(50),
ParentID int
)
insert into tableTree(Title,ParentID) select '产品分类',0
union all select 'HID汽车车灯系列',1
union all select 'OSRAM聯誠氙氣燈套件',8
union all select '聯誠HID氙氣燈套件',8
union all select '眼鏡蛇氙氣燈套件',8
union all select '征服者氙氣燈套件',8
union all select '鷹眼HID氙氣燈套件',8
union all select 'HID品牌套件',2
union all select 'HID摩托车灯系列',1
union all select 'HID摩托车套件',9
select * from tableTree