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

OA系统

开发平台:

C#

  1. namespace UDS.Inc
  2. {
  3. using System;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Web;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.HtmlControls;
  9. using Microsoft.Web.UI.WebControls;
  10. using UDS.Components;
  11. using System.Data.SqlClient;
  12. /// <summary>
  13. /// ControlCustomProjectTreeView 的摘要说明。
  14. /// </summary>
  15. public class ControlCustomProjectTreeView : System.Web.UI.UserControl
  16. {
  17. protected DataTable dataTbl1,dataTbl2;
  18. protected Microsoft.Web.UI.WebControls.TreeView tv1;
  19. private string _imagepath = "";
  20. private bool _displayfunctionnode = true;
  21. private int _rightcode = 1;
  22. public string _username = "";
  23. /// <summary>
  24. /// 图片路径
  25. /// </summary>
  26. public string ImagePath
  27. {
  28. get
  29. {
  30. return _imagepath;
  31. }
  32. set
  33. {
  34. _imagepath = value;
  35. }
  36. }
  37. /// <summary>
  38. /// 显示功能节点
  39. /// </summary>
  40. public bool DisplayFunctionNode
  41. {
  42. get
  43. {
  44. return _displayfunctionnode;
  45. }
  46. set
  47. {
  48. _displayfunctionnode = value;
  49. }
  50. }
  51. /// <summary>
  52. /// 浏览权
  53. /// </summary>
  54. public int RightCode
  55. {
  56. get
  57. {
  58. return _rightcode; 
  59. }
  60. set
  61. {
  62. _rightcode = value;
  63. }
  64. }
  65. /// <summary>
  66. /// 用户名
  67. /// </summary>
  68. public string UserName
  69. {
  70. get
  71. {
  72. return _username;
  73. }
  74. set
  75. {
  76. _username = value;
  77. }
  78. }
  79. public int SelectedClassIndex
  80. {
  81. get
  82. {
  83. //if(tv1.SelectedNodeIndex!="0")
  84. return Int32.Parse(tv1.GetNodeFromIndex(tv1.SelectedNodeIndex).ID);
  85. //else
  86. // return 0;
  87. }
  88. }
  89. private void Page_Load(object sender, System.EventArgs e)
  90. {
  91. // 在此处放置用户代码以初始化页面
  92. }
  93. public void Bind()
  94. {
  95. InitRootNodeDataTable();
  96. InitTreeRootNode(tv1.Nodes);
  97. tv1.ExpandLevel = 1;
  98. }
  99. /// <summary>
  100. /// 初始化 RootNode DataTable
  101. /// </summary>
  102. private void InitRootNodeDataTable()
  103. {
  104. Database data = new Database();
  105. SqlDataReader dataReader = null;
  106. String username = Request.Cookies["Username"].Value.ToString();
  107. SqlParameter[] prams = {
  108.    data.MakeInParam("@UserName",      SqlDbType.VarChar , 20, _username),
  109.    data.MakeInParam("@RightCode",      SqlDbType.Int , 1, _rightcode),
  110.    data.MakeInParam("@IncludeFunctionNode",      SqlDbType.Int , 1,(_displayfunctionnode==false)? 0:1)
  111.    };
  112. try
  113. {
  114. data.RunProc("sp_GetShowClass", prams,out dataReader);
  115. }
  116. catch(Exception ex)
  117. {
  118. Response.Write(ex.ToString());
  119. //UDS.Components.Error.Log(ex.ToString());
  120. }
  121. dataTbl1 = UDS.Components.Tools.ConvertDataReaderToDataTable(dataReader); 
  122. dataTbl1.TableName = "TreeView";
  123. }
  124. /// <summary>
  125. /// 初始化 ChildNode DataTable
  126. /// </summary>
  127. private void InitChildNodeDataTable(int ClassParentID)
  128. {
  129. Database data = new Database();
  130. SqlDataReader dataReader = null;
  131. SqlParameter[] prams = {
  132.    data.MakeInParam("@Class_id",      SqlDbType.Int  , 20, ClassParentID)
  133.    };
  134. try
  135. {
  136. data.RunProc("sp_GetAllChildClass", prams,out dataReader);
  137. }
  138. catch(Exception ex)
  139. {
  140. Response.Write(ex.ToString());
  141. //UDS.Components.Error.Log(ex.ToString());
  142. }
  143. dataTbl2 = UDS.Components.Tools.ConvertDataReaderToDataTable(dataReader); 
  144. dataTbl2.TableName = "TreeView";
  145. }
  146. /// <summary>
  147. /// 初始化TreeView 的 RootNode
  148. /// </summary>
  149. private void InitTreeRootNode(TreeNodeCollection TNC)
  150. {
  151. DataView dataView  = new DataView();
  152. dataView    = dataTbl1.Copy().DefaultView;
  153. dataView.RowFilter = "ClassParentID = ClassID";
  154. foreach(DataRowView drv in dataView)
  155. {
  156. TreeNode tn    = new TreeNode();
  157. tn.ID    = drv["ClassID"].ToString();
  158. tn.Text    = drv["ClassName"].ToString();
  159. tn.ImageUrl    = GetIcon(drv["ClassType"].ToString(),_imagepath);
  160. //tn.NavigateUrl = "# onclick='alert('dddd')'";
  161. //tn.Target      = "self";
  162. TNC.Add(tn);
  163. InitChildNodeDataTable(Int32.Parse(tn.ID.ToString()));
  164. InitTreeChildNode(tn.Nodes,tn.ID);
  165. }
  166. dataTbl1 = null;
  167. dataTbl2 = null;
  168. }
  169. /// <summary>
  170. /// 初始化TreeView 的 ChildNode
  171. /// </summary>
  172. private void InitTreeChildNode(TreeNodeCollection TNC,string classParentID)
  173. {
  174. DataView dataView  = new DataView();
  175. dataView    = dataTbl2.Copy().DefaultView ;
  176. dataView.RowFilter = "ClassParentID = " + classParentID + "";
  177. foreach(DataRowView drv in dataView)
  178. {
  179. TreeNode tn    = new TreeNode();
  180. tn.ID    = drv["ClassID"].ToString();
  181. tn.Text    = drv["ClassName"].ToString();
  182. tn.ImageUrl    = GetIcon(drv["ClassType"].ToString(),_imagepath);
  183. //tn.NavigateUrl = "#";
  184. //tn.Target      = "parent";
  185. TNC.Add(tn);
  186. InitTreeChildNode(tn.Nodes,tn.ID);
  187. }
  188. }
  189. #region 获取节点图标
  190. /// <summary>
  191. /// 获取节点图标
  192. /// </summary>
  193. private string GetIcon(string ClassType,string imagepath)
  194. {
  195. string rtnValue = imagepath;
  196. switch (ClassType)
  197. {
  198. case "0":
  199. rtnValue+= "flag.gif" ;
  200. break;
  201. case "1":
  202. rtnValue+= "myDoc.gif" ;
  203. break;
  204. case "2":
  205. rtnValue+= "mail.gif" ;
  206. break;
  207. case "3":
  208. rtnValue+= "page.gif" ;
  209. break;
  210. case "4":
  211. rtnValue+= "staff.gif" ;
  212. break;
  213. case "5":
  214. rtnValue+= "help_page.gif" ;
  215. break;
  216. case "6":
  217. rtnValue+= "MyTask.gif";
  218. break;
  219. case "7":
  220. rtnValue+= "mail.gif" ;
  221. break;
  222. case "8":
  223. rtnValue+= "myDoc.gif" ;
  224. break;
  225. case "9":
  226. rtnValue+= "DocFlow.gif" ;
  227. break;
  228. case "10":
  229. rtnValue+= "ClientManage.gif" ;
  230. break;
  231. case "11":
  232. rtnValue+= "myLinkman.gif" ;
  233. break;
  234. case "12":
  235. rtnValue+= "position.gif" ;
  236. break;
  237. case "13":
  238. rtnValue+= "role.gif" ;
  239. break;
  240. case "14":
  241. rtnValue+= "kaoqin.gif" ;
  242. break;
  243. default: 
  244. rtnValue+= "red_ball.gif";
  245. break;
  246. }
  247. return rtnValue;
  248. }
  249. #endregion
  250. #region Web 窗体设计器生成的代码
  251. override protected void OnInit(EventArgs e)
  252. {
  253. //
  254. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  255. //
  256. InitializeComponent();
  257. base.OnInit(e);
  258. }
  259. /// <summary>
  260. /// 设计器支持所需的方法 - 不要使用代码编辑器
  261. /// 修改此方法的内容。
  262. /// </summary>
  263. private void InitializeComponent()
  264. {
  265. this.Load += new System.EventHandler(this.Page_Load);
  266. }
  267. #endregion
  268. }
  269. }