protected Microsoft.Web.UI.WebControls.TreeView tv_Menu;
protected DataTable dt1,dt2;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
TVBind();
}
} public void TVBind()
{
InitRootNodeDataTable();
InitTreeRootNode(tv_Menu.Nodes);
tv_Menu.ExpandLevel = 1 ;
if(tv_Menu.Nodes.Count > 0)
{
tv_Menu.Nodes[0].Expanded = true;
}
} private void InitRootNodeDataTable()
{
string SqlSentence = "select * from forums_Class where ClassParentId=0";
dt1 = Base.GetDataTable(SqlSentence);
dt1.TableName = "TreeView1";
}
/// <summary>
/// 初始化 ChildNode DataTable
/// </summary>
private void InitChildNodeDataTable(int ClassParentID)
{
string SqlSentence = "select * from forums_Class where ClassParentId="+ClassParentID.ToString().Trim();
dt2 = Base.GetDataTable(SqlSentence);
dt2.TableName = "TreeView2";
} /// <summary>
/// 初始化TreeView 的 RootNode
/// </summary>
private void InitTreeRootNode(TreeNodeCollection TNC)
{
DataView dataView = new DataView();
dataView = dt1.Copy().DefaultView;
//dataView.RowFilter = "ClassParentID = ClassID";
int i=0;
foreach(DataRowView drv in dataView)
{
TreeNode tn = new TreeNode();
tn.ID = drv["ClassId"].ToString();
tn.Text = drv["ClassName"].ToString();
tn.ImageUrl = "bg_menu.gif";
tn.NavigateUrl = "http://main.aspx?id="+drv["ClassId"].ToString();
tn.Target = "mainFrame";
//TNC.Add(tn);
tv_Menu.Nodes.AddAt(i++,tn);
InitChildNodeDataTable(Int32.Parse(tn.ID.ToString()));
InitTreeChildNode(tn.Nodes,tn.ID);
}
dt1 = null;
dt2 = null;
}
/// <summary>
/// 初始化TreeView 的 ChildNode
/// </summary>
private void InitTreeChildNode(TreeNodeCollection TNC,string classParentID)
{
DataView dataView = new DataView();
dataView = dt2.Copy().DefaultView ;
dataView.RowFilter = "ClassParentId = " + classParentID.Trim() + "";
foreach(DataRowView drv in dataView)
{
TreeNode tn = new TreeNode();
tn.ID = drv["ClassID"].ToString();
tn.Text = drv["ClassName"].ToString();
//tn.ImageUrl = GetIcon(drv["ClassType"].ToString(),_imagepath);
tn.NavigateUrl = "http://main.aspx?id="+drv["ClassId"].ToString();
tn.Target = "mainFrame";
//TNC.Add(tn);
tv_Menu.Nodes.Add(tn);
InitTreeChildNode(tn.Nodes,tn.ID);
}
}
protected DataTable dt1,dt2;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
TVBind();
}
} public void TVBind()
{
InitRootNodeDataTable();
InitTreeRootNode(tv_Menu.Nodes);
tv_Menu.ExpandLevel = 1 ;
if(tv_Menu.Nodes.Count > 0)
{
tv_Menu.Nodes[0].Expanded = true;
}
} private void InitRootNodeDataTable()
{
string SqlSentence = "select * from forums_Class where ClassParentId=0";
dt1 = Base.GetDataTable(SqlSentence);
dt1.TableName = "TreeView1";
}
/// <summary>
/// 初始化 ChildNode DataTable
/// </summary>
private void InitChildNodeDataTable(int ClassParentID)
{
string SqlSentence = "select * from forums_Class where ClassParentId="+ClassParentID.ToString().Trim();
dt2 = Base.GetDataTable(SqlSentence);
dt2.TableName = "TreeView2";
} /// <summary>
/// 初始化TreeView 的 RootNode
/// </summary>
private void InitTreeRootNode(TreeNodeCollection TNC)
{
DataView dataView = new DataView();
dataView = dt1.Copy().DefaultView;
//dataView.RowFilter = "ClassParentID = ClassID";
int i=0;
foreach(DataRowView drv in dataView)
{
TreeNode tn = new TreeNode();
tn.ID = drv["ClassId"].ToString();
tn.Text = drv["ClassName"].ToString();
tn.ImageUrl = "bg_menu.gif";
tn.NavigateUrl = "http://main.aspx?id="+drv["ClassId"].ToString();
tn.Target = "mainFrame";
//TNC.Add(tn);
tv_Menu.Nodes.AddAt(i++,tn);
InitChildNodeDataTable(Int32.Parse(tn.ID.ToString()));
InitTreeChildNode(tn.Nodes,tn.ID);
}
dt1 = null;
dt2 = null;
}
/// <summary>
/// 初始化TreeView 的 ChildNode
/// </summary>
private void InitTreeChildNode(TreeNodeCollection TNC,string classParentID)
{
DataView dataView = new DataView();
dataView = dt2.Copy().DefaultView ;
dataView.RowFilter = "ClassParentId = " + classParentID.Trim() + "";
foreach(DataRowView drv in dataView)
{
TreeNode tn = new TreeNode();
tn.ID = drv["ClassID"].ToString();
tn.Text = drv["ClassName"].ToString();
//tn.ImageUrl = GetIcon(drv["ClassType"].ToString(),_imagepath);
tn.NavigateUrl = "http://main.aspx?id="+drv["ClassId"].ToString();
tn.Target = "mainFrame";
//TNC.Add(tn);
tv_Menu.Nodes.Add(tn);
InitTreeChildNode(tn.Nodes,tn.ID);
}
}
con.Open();
str_Sql="select * from PE_Class where ChannelID=1 order by RootID,OrderID ";
SqlCommand cmd = new SqlCommand(str_Sql,con);
dr=cmd.ExecuteReader(); if(!this.IsPostBack)
{
this.UpdateTime.Value=System.DateTime.Now.ToString();
//初始化arrShowLine 不能放在循环体里面
//arrShowLine 功能:循环体第i次循环判断,如果i=false,显示"│",否则显示" "
bool[] arrShowLine=new bool[21];
for(int i=0;i<arrShowLine.Length;i++)
{
arrShowLine[i]=false;
}
//添加特定Item时这样绑定(这里添加多一个“无(做为一级栏目)”的选择,不在数据库读取的)
//且根据接收的Depth判断他的深度
//ddlParentID.Items.Add(new ListItem("无(做为一级栏目)","0"));
while ( dr.Read() )
{
string ClassValue;
if((int)dr["Child"]>0)
{
ClassValue="0";
}
else if (dr["LinkUrl"].ToString()!="")
{
ClassValue="";
}
else
{
ClassValue=dr["ClassID"].ToString();
}
if(dr[0] is System.DBNull)
{
ddlClassID.Items.Add(new ListItem("请先添加栏目",""));
}
else
{
int tmpDepth=(int)dr["Depth"];
//调用arrShowLine
int tmpNextID=(int)dr["NextID"];
if (tmpNextID>0)
{
arrShowLine[tmpDepth]=true;
}
else
{
arrShowLine[tmpDepth]=false;
}
//子栏目输出方式
if (tmpDepth>0)
{
string strTemp="";
for(int i=1;i<tmpDepth+1;i++)
{
strTemp=strTemp+" ";
if(i==tmpDepth)
{
if((int)dr["NextID"]>0)
{
strTemp=strTemp+"├ ";
}
else
{
strTemp=strTemp+"└ ";
}
}
else
{
if (arrShowLine[i]==true)
//输入if (i==3)表示第三次循环显示"│",可以试一下
{
strTemp=strTemp+"│";
}
else
{
strTemp=strTemp+" ";
}
}
}
strTemp=strTemp+dr["ClassName"].ToString(); //判断是否外部连接
if (dr["LinkUrl"].ToString()!="")
{
strTemp=strTemp+"(外)";
}
//
ddlClassID.Items.Add(new ListItem(HttpUtility.HtmlDecode(strTemp),ClassValue ));
}
//跟栏目输出方式
else
{
//判断是否外部连接
if (dr["LinkUrl"].ToString()!="")
{
ddlClassID.Items.Add(new ListItem(dr["ClassName"].ToString()+"(外)",ClassValue ));
}
else
{
ddlClassID.Items.Add(new ListItem(dr["ClassName"].ToString(),ClassValue ));
}
}
}
}
}
con.Close();
}