ControlProjectTreeView.ascx.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:7k
源码类别:

C#编程

开发平台:

C#

  1. namespace UDS.Inc
  2. {
  3. using System;
  4. using System.Collections;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Web;
  9. using System.Web.SessionState;
  10. using System.Web.UI;
  11. using System.Web.UI.WebControls;
  12. using System.Web.UI.HtmlControls;
  13. using System.Data.SqlClient;
  14. using UDS.Components;
  15. using Microsoft.Web.UI.WebControls;
  16. using System.Configuration;  
  17. /// <summary>
  18. /// ClassTreeView 的摘要说明。
  19. /// </summary>
  20. public abstract class ClassTreeView : System.Web.UI.UserControl
  21. {
  22. protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
  23. protected DataTable dataTbl1,dataTbl2;
  24. private void Page_Load(object sender, System.EventArgs e)
  25. {
  26. if(!Page.IsPostBack)
  27. {
  28. InitRootNodeDataTable();
  29. InitTreeRootNode(TreeView1.Nodes);
  30. TreeView1.ExpandLevel = 1;
  31. // TreeView1.Nodes[80].Expanded=true;
  32. // InitTree(TreeView1.Nodes,"0");
  33. }
  34. }
  35. private void ExpandNode(string NodeID)
  36. {
  37. }
  38. #region 将DataReader 转为 DataTable
  39. /// <summary>
  40. /// 将DataReader 转为 DataTable
  41. /// </summary>
  42. /// <param name="DataReader">DataReader</param>
  43. public DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
  44. {
  45. DataTable datatable = new DataTable();
  46. DataTable schemaTable = dataReader.GetSchemaTable();
  47. //动态添加列
  48. foreach(DataRow myRow in schemaTable.Rows)
  49. {
  50. DataColumn myDataColumn = new DataColumn();
  51. myDataColumn.DataType = System.Type.GetType("System.String");
  52. myDataColumn.ColumnName = myRow[0].ToString();
  53. datatable.Columns.Add(myDataColumn);
  54. }
  55. //添加数据
  56. while(dataReader.Read())
  57. {
  58. DataRow myDataRow = datatable.NewRow();
  59. for(int i=0;i<schemaTable.Rows.Count;i++)
  60. {
  61. myDataRow[i] = dataReader[i].ToString();
  62. }
  63. datatable.Rows.Add(myDataRow);
  64. myDataRow = null;
  65. }
  66. schemaTable = null;
  67. return datatable;
  68. }
  69. #endregion
  70. /// <summary>
  71. /// 初始化 RootNode DataTable
  72. /// </summary>
  73. private void InitRootNodeDataTable()
  74. {
  75. Database data = new Database();
  76. SqlDataReader dataReader = null;
  77. String username = Request.Cookies["Username"].Value.ToString();
  78. SqlParameter[] prams = {
  79.    data.MakeInParam("@UserName",      SqlDbType.VarChar , 20, username)
  80.    };
  81. try
  82. {
  83. data.RunProc("sp_GetShowClass", prams,out dataReader);
  84. }
  85. catch(Exception ex)
  86. {
  87. Response.Write(ex.ToString());
  88. //UDS.Components.Error.Log(ex.ToString());
  89. }
  90. dataTbl1 = ConvertDataReaderToDataTable(dataReader);
  91. dataReader.Close();
  92. dataTbl1.TableName = "TreeView";
  93. }
  94. /// <summary>
  95. /// 初始化 ChildNode DataTable
  96. /// </summary>
  97. private void InitChildNodeDataTable(int ClassParentID)
  98. {
  99. Database data = new Database();
  100. SqlDataReader dataReader = null;
  101. SqlParameter[] prams = {
  102.    data.MakeInParam("@Class_id",      SqlDbType.Int  , 20, ClassParentID)
  103.    };
  104. try
  105. {
  106. data.RunProc("sp_GetAllChildClass", prams,out dataReader);
  107. }
  108. catch(Exception ex)
  109. {
  110. Response.Write(ex.ToString());
  111. //UDS.Components.Error.Log(ex.ToString());
  112. }
  113. dataTbl2 = ConvertDataReaderToDataTable(dataReader); 
  114. dataReader.Close();
  115. dataTbl2.TableName = "TreeView";
  116. }
  117. /// <summary>
  118. /// 初始化TreeView 的 RootNode
  119. /// </summary>
  120. private void InitTreeRootNode(TreeNodeCollection TNC)
  121. {
  122. DataView dataView  = new DataView();
  123. dataView    = dataTbl1.Copy().DefaultView;
  124. // dataView.RowFilter = "ClassParentID = ClassID";
  125. foreach(DataRowView drv in dataView)
  126. {
  127. TreeNode tn    = new TreeNode();
  128. tn.ID    = drv["ClassID"].ToString();
  129. tn.Text    = "<span onmousemove=javascript:title='"+drv["ClassName"]+"'>"+drv["ClassName"].ToString()+"</span>";
  130. tn.ImageUrl    = GetIcon(drv["ClassType"].ToString());
  131. tn.NavigateUrl = "Switch.aspx?Action=1&ClassID="+drv["ClassID"].ToString();
  132. tn.Target      = "MainFrame";
  133. TNC.Add(tn);
  134. InitChildNodeDataTable(Int32.Parse(tn.ID.ToString()));
  135. InitTreeChildNode(tn.Nodes,tn.ID);
  136. }
  137. dataTbl1 = null;
  138. dataTbl2 = null;
  139. }
  140. /// <summary>
  141. /// 初始化TreeView 的 ChildNode
  142. /// </summary>
  143. private void InitTreeChildNode(TreeNodeCollection TNC,string classParentID)
  144. {
  145. DataView dataView  = new DataView();
  146. dataView    = dataTbl2.Copy().DefaultView ;
  147. dataView.RowFilter = "ClassParentID = " + classParentID + "";
  148. foreach(DataRowView drv in dataView)
  149. {
  150. TreeNode tn    = new TreeNode();
  151. tn.ID    = drv["ClassID"].ToString();
  152. tn.Text    = "<span onmousemove=javascript:title='"+drv["ClassName"]+"'>"+drv["ClassName"].ToString()+"</span>";
  153. tn.ImageUrl    = GetIcon(drv["ClassType"].ToString());
  154. tn.NavigateUrl = "Switch.aspx?Action=1&ClassID="+drv["ClassID"].ToString();
  155. tn.Target      = "MainFrame";
  156. TNC.Add(tn);
  157. InitTreeChildNode(tn.Nodes,tn.ID);
  158. }
  159. }
  160. #region 获取节点图标
  161. /// <summary>
  162. /// 获取节点图标
  163. /// </summary>
  164. private string GetIcon(string ClassType)
  165. {
  166. string rtnValue = "../../DataImages/";
  167. switch (ClassType)
  168. {
  169. case "0":
  170. rtnValue+= "flag.gif" ;
  171. break;
  172. case "1":
  173. rtnValue+= "myDoc.gif" ;
  174. break;
  175. case "2":
  176. rtnValue+= "mail.gif" ;
  177. break;
  178. case "3":
  179. rtnValue+= "page.gif" ;
  180. break;
  181. case "4":
  182. rtnValue+= "staff.gif" ;
  183. break;
  184. case "5":
  185. rtnValue+= "help_page.gif" ;
  186. break;
  187. case "6":
  188. rtnValue+= "MyTask.gif";
  189. break;
  190. case "7":
  191. rtnValue+= "mail.gif" ;
  192. break;
  193. case "8":
  194. rtnValue+= "myDoc.gif" ;
  195. break;
  196. case "9":
  197. rtnValue+= "DocFlow.gif" ;
  198. break;
  199. case "10":
  200. rtnValue+= "ClientManage.gif" ;
  201. break;
  202. case "11":
  203. rtnValue+= "myLinkman.gif" ;
  204. break;
  205. case "12":
  206. rtnValue+= "position.gif" ;
  207. break;
  208. case "13":
  209. rtnValue+= "roleManage.gif" ;
  210. break;
  211. case "14":
  212. rtnValue+= "kaoqin.gif" ;
  213. break;
  214. case "15":
  215. rtnValue+= "workadmin.gif" ;
  216. break;
  217. case "16":
  218. rtnValue+= "message.gif" ;
  219. break;
  220.                 case "17":
  221. rtnValue+= "usbkey.gif" ;
  222. break;
  223. default: 
  224. rtnValue+= "red_ball.gif";
  225. break;
  226. }
  227. return rtnValue;
  228. }
  229. #endregion
  230. #region Web Form Designer generated code
  231. override protected void OnInit(EventArgs e)
  232. {
  233. //
  234. // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
  235. //
  236. InitializeComponent();
  237. base.OnInit(e);
  238. }
  239. /// 设计器支持所需的方法 - 不要使用
  240. /// 代码编辑器修改此方法的内容。
  241. /// </summary>
  242. private void InitializeComponent()
  243. {
  244. this.Load += new System.EventHandler(this.Page_Load);
  245. }
  246. #endregion
  247. }
  248. }