using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DTable_App.DTable_Test
{
	/// <summary>
	/// test 的摘要说明。
	/// </summary>
	public class test : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label Label1;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			/*
			string [] strabc=new string[9];
			strabc.SetValue("absdlkf",0);
			strabc.SetValue("kljl;kj",1);
			strabc.SetValue("mkl",2);

			//strabc[0]="askldfasldf";
			//strabc[1]="askhfdkjhijui32475";
			string mystring="mkl";
			int i=Array.IndexOf(strabc,mystring);
			Label1.Text=i.ToString();

*/
System.Data.SqlClient.SqlConnection oconn=new System.Data.SqlClient.SqlConnection(sharecode.DataconnectString);
string IDFiledName="bm_id";
			string ListFieldName="部门名称";
			string ParentFieldName="上级部门";
			string TableName="bm_tb";



 System.Data.SqlClient.SqlDataAdapter tmpcmd =new System.Data.SqlClient.SqlDataAdapter("select " + IDFiledName + "," + ListFieldName + "," + ParentFieldName + " from " + TableName + " order by " + ParentFieldName + "," + IDFiledName, oconn);

       System.Data.DataSet  ds =new DataSet();//  New DataSet
        tmpcmd.Fill(ds, "tmptable");
        System.Data.DataTable tmptable =new DataTable("thistable");
			tmptable=ds.Tables[0];

Label1.Text="<select name=nakd>";
			
			MakeTree(tmptable,ParentFieldName,"0",IDFiledName,ListFieldName,-1);
			Label1.Text+=strouttext;
			Label1.Text+="</select>";

        
		
			//ds.Tables("tmptable");

		}
		/// <summary>
		/// 绑定生成一个有树结构的下拉菜单
		/// </summary>
		/// <param name="dtNodeSets">菜单记录数据所在的表</param>
		/// <param name="strParentColumn">表中用于标记父记录的字段</param>
		/// <param name="strRootValue">第一层记录的父记录值(通常设计为0或者-1或者Null)用来表示没有父记录</param>
		/// <param name="strIndexColumn">索引字段，也就是放在DropDownList的Value里面的字段</param>
		/// <param name="strTextColumn">显示文本字段，也就是放在DropDownList的Text里面的字段</param>
		/// <param name="drpBind">需要绑定的DropDownList</param>
		/// <param name="i">用来控制缩入量的值，请输入-1</param>
		/// 
		private static string strouttext="";
		private void  MakeTree(DataTable dtNodeSets,string strParentColumn,string strRootValue,string strIndexColumn,string strTextColumn,int i)
		{
			//每向下一层，多一个缩入单位
			i++;

			DataView dvNodeSets = new DataView(dtNodeSets);
			dvNodeSets.RowFilter = strParentColumn + "=" + strRootValue;

			string strPading = "├";  //缩入字符

			//通过i来控制缩入字符的长度，我这里设定的是一个全角的空格
			string strbgcolor="";
			if (i==0)
			{
				strbgcolor=" style='Background:#CCCCCC;' ";
			}
			else if(i==1)
			{
				strbgcolor=" style='Background:#DDDDDD;' ";
			}
			else if(i==2)
			{
				strbgcolor=" style='Background:#EEEEEE;' ";
			}
			else if(i==3)
			{
				strbgcolor=" style='Background:#f6f6f6;' ";
			}
			for(int j=0;j<i;j++)
			{

				strPading += "─";//如果要增加缩入的长度，改成两个全角的空格就可以了
			}

			foreach(DataRowView drv in dvNodeSets) 
			{
				
				strouttext+= "<option value=" + drv[strIndexColumn] + strbgcolor + ">" + strPading + "─" + drv[strTextColumn].ToString() + "</option>";
							
				 MakeTree(dtNodeSets,strParentColumn,drv[strIndexColumn].ToString(),strIndexColumn,strTextColumn,i);
				
			}

			//递归结束，要回到上一层，所以缩入量减少一个单位
			i--;

			
		}


		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion
	}
}
