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

C#编程

开发平台:

C#

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