TreeView.aspx.cs
上传用户:xgw_05
上传日期:2009-12-11
资源大小:20208k
文件大小:6k
源码类别:

OA系统

开发平台:

C#

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