PopedomManage.cs
上传用户:hjieqiu
上传日期:2013-05-11
资源大小:16494k
文件大小:10k
源码类别:

企业管理

开发平台:

C#

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. namespace 进销存管理系统
  8. {
  9. /// <summary>
  10. /// PopedomManage 的摘要说明。
  11. /// </summary>
  12. public class PopedomManage : System.Windows.Forms.Form
  13. {
  14. //设置数据库连接和适配器
  15. private DataSet ds = new DataSet();
  16. private LinkDataBase link = new LinkDataBase();
  17. private string sendTableName = "用户清单";
  18. private string sendStrSQL = "SELECT * from 用户清单 where 姓名<>'sys'";
  19. private DataTable popedomDataTable = new DataTable();
  20. private bool blInitial = true;
  21. private System.Windows.Forms.GroupBox groupBox1;
  22. private System.Windows.Forms.Label label1;
  23. private System.Windows.Forms.Label label2;
  24. private System.Windows.Forms.CheckedListBox chkLst_Priority;
  25. private System.Windows.Forms.DataGrid dgrd_Popedom;
  26. /// <summary>
  27. /// 必需的设计器变量。
  28. /// </summary>
  29. private System.ComponentModel.Container components = null;
  30. public PopedomManage()
  31. {
  32. //
  33. // Windows 窗体设计器支持所必需的
  34. //
  35. InitializeComponent();
  36. //
  37. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  38. //
  39. }
  40. /// <summary>
  41. /// 清理所有正在使用的资源。
  42. /// </summary>
  43. protected override void Dispose( bool disposing )
  44. {
  45. if( disposing )
  46. {
  47. if(components != null)
  48. {
  49. components.Dispose();
  50. }
  51. }
  52. base.Dispose( disposing );
  53. }
  54. #region Windows 窗体设计器生成的代码
  55. /// <summary>
  56. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  57. /// 此方法的内容。
  58. /// </summary>
  59. private void InitializeComponent()
  60. {
  61. this.groupBox1 = new System.Windows.Forms.GroupBox();
  62. this.chkLst_Priority = new System.Windows.Forms.CheckedListBox();
  63. this.label2 = new System.Windows.Forms.Label();
  64. this.label1 = new System.Windows.Forms.Label();
  65. this.dgrd_Popedom = new System.Windows.Forms.DataGrid();
  66. this.groupBox1.SuspendLayout();
  67. ((System.ComponentModel.ISupportInitialize)(this.dgrd_Popedom)).BeginInit();
  68. this.SuspendLayout();
  69. // 
  70. // groupBox1
  71. // 
  72. this.groupBox1.Controls.Add(this.chkLst_Priority);
  73. this.groupBox1.Controls.Add(this.label2);
  74. this.groupBox1.Controls.Add(this.label1);
  75. this.groupBox1.Controls.Add(this.dgrd_Popedom);
  76. this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
  77. this.groupBox1.Location = new System.Drawing.Point(0, 0);
  78. this.groupBox1.Name = "groupBox1";
  79. this.groupBox1.Size = new System.Drawing.Size(648, 357);
  80. this.groupBox1.TabIndex = 0;
  81. this.groupBox1.TabStop = false;
  82. // 
  83. // chkLst_Priority
  84. // 
  85. this.chkLst_Priority.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
  86. | System.Windows.Forms.AnchorStyles.Right)));
  87. this.chkLst_Priority.CheckOnClick = true;
  88. this.chkLst_Priority.Items.AddRange(new object[] {
  89.  "商品资料维护",
  90.  "供货商资料维护",
  91.  "客户资料维护",
  92.  "进货单",
  93.  "销售单",
  94.  "库存查询",
  95.  "权限管理"});
  96. this.chkLst_Priority.Location = new System.Drawing.Point(456, 52);
  97. this.chkLst_Priority.Name = "chkLst_Priority";
  98. this.chkLst_Priority.Size = new System.Drawing.Size(172, 276);
  99. this.chkLst_Priority.TabIndex = 2;
  100. this.chkLst_Priority.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.chkLst_Priority_ItemCheck);
  101. // 
  102. // label2
  103. // 
  104. this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
  105. this.label2.Location = new System.Drawing.Point(450, 28);
  106. this.label2.Name = "label2";
  107. this.label2.Size = new System.Drawing.Size(100, 16);
  108. this.label2.TabIndex = 5;
  109. this.label2.Text = "权限:";
  110. // 
  111. // label1
  112. // 
  113. this.label1.Location = new System.Drawing.Point(33, 28);
  114. this.label1.Name = "label1";
  115. this.label1.Size = new System.Drawing.Size(100, 16);
  116. this.label1.TabIndex = 4;
  117. this.label1.Text = "用户:";
  118. // 
  119. // dgrd_Popedom
  120. // 
  121. this.dgrd_Popedom.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
  122. | System.Windows.Forms.AnchorStyles.Left) 
  123. | System.Windows.Forms.AnchorStyles.Right)));
  124. this.dgrd_Popedom.CaptionVisible = false;
  125. this.dgrd_Popedom.DataMember = "";
  126. this.dgrd_Popedom.HeaderForeColor = System.Drawing.SystemColors.ControlText;
  127. this.dgrd_Popedom.Location = new System.Drawing.Point(26, 52);
  128. this.dgrd_Popedom.Name = "dgrd_Popedom";
  129. this.dgrd_Popedom.ReadOnly = true;
  130. this.dgrd_Popedom.Size = new System.Drawing.Size(412, 274);
  131. this.dgrd_Popedom.TabIndex = 1;
  132. this.dgrd_Popedom.MouseUp += new System.Windows.Forms.MouseEventHandler(this.dgrd_Popedom_MouseUp);
  133. // 
  134. // PopedomManage
  135. // 
  136. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  137. this.ClientSize = new System.Drawing.Size(648, 357);
  138. this.Controls.Add(this.groupBox1);
  139. this.Name = "PopedomManage";
  140. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  141. this.Text = "【权限管理】";
  142. this.Load += new System.EventHandler(this.PopedomManage_Load);
  143. this.groupBox1.ResumeLayout(false);
  144. ((System.ComponentModel.ISupportInitialize)(this.dgrd_Popedom)).EndInit();
  145. this.ResumeLayout(false);
  146. }
  147. #endregion
  148.         //---------窗体创建时,将用户的权限数据读入并显示-----------
  149. private void PopedomManage_Load(object sender, System.EventArgs e)
  150. {
  151. this.ds = this.link.SelectDataBase(sendStrSQL,sendTableName);
  152. this.dgrd_Popedom.DataSource = ds.Tables[0];
  153. this.DataGridStateControl();
  154. this.dgrd_Popedom.Select(0);//窗体生成后选中第一行
  155. string selectedUserID = this.ds.Tables[0].Rows[0][0].ToString();//默认选中用户清单中的第一个用户
  156. string tempStrSQL = "select 权限名称 from 权限清单 " + " where 用户编号 = '" + selectedUserID + "'";
  157. popedomDataTable = link.SelectDataBase(tempStrSQL);//读入该用户的权限
  158. for (int i=0;i<popedomDataTable.Rows.Count;i++)//根据权限设置ListBox
  159. {
  160. for (int j=0;j<this.chkLst_Priority.Items.Count;j++)
  161. {
  162. if (this.chkLst_Priority.Items[j].ToString().Trim() == popedomDataTable.Rows[i][0].ToString().Trim())
  163. {
  164. this.chkLst_Priority.SetItemChecked(j,true);
  165. }
  166. }
  167. }
  168. }
  169. //-------------设置显示用户信息的表---------------
  170. private void DataGridStateControl()
  171. {
  172. DataGridTableStyle ts = new DataGridTableStyle();
  173. DataGridNoActiveCellColumn aColumnTextColumn;//设置dataGrid格式
  174. ts.AlternatingBackColor = Color.LightGray;
  175. ts.MappingName = this.ds.Tables[0].TableName;
  176. ts.AllowSorting = false;
  177. int numCols = this.ds.Tables[0].Columns.Count;
  178. for (int i = 0;i< numCols;i++)
  179. {
  180. aColumnTextColumn = new DataGridNoActiveCellColumn();
  181. aColumnTextColumn.MappingName = this.ds.Tables[0].Columns[i].ColumnName;
  182. aColumnTextColumn.HeaderText = this.ds.Tables[0].Columns[i].ColumnName;
  183. aColumnTextColumn.NullText = "";
  184. aColumnTextColumn.Format = "F";
  185. ts.GridColumnStyles.Add(aColumnTextColumn);
  186. }
  187. this.dgrd_Popedom.TableStyles.Add(ts);
  188. }
  189. //-------------改变用户的权限,并向数据库中提交----------------
  190. private void chkLst_Priority_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
  191. {
  192. //CheckedListBox控件中的Item的CheckedState属性是由点击CheckedListBox控件而改变时才响应该事件
  193. if (blInitial == false)
  194. {
  195. if (e.CurrentValue.ToString() == "Unchecked")
  196. {
  197. try
  198. {
  199. string strUserName = this.dgrd_Popedom[this.dgrd_Popedom.CurrentCell.RowNumber,0].ToString().Trim();
  200. string strPopedom = this.chkLst_Priority.SelectedItem.ToString();
  201. string tempSendStrSQL = "insert 权限清单 (用户编号,权限名称) values ('" + strUserName +"','"+ strPopedom +"')";
  202. this.link.UpdateDataBase(tempSendStrSQL);
  203. }
  204. catch
  205. {
  206. MessageBox.Show("数据库中的权限修改出错,请重试!","信息");
  207. }
  208. }
  209. else if (e.CurrentValue.ToString() == "Checked")
  210. {
  211. try
  212. {
  213. string strUserName = this.dgrd_Popedom[this.dgrd_Popedom.CurrentCell.RowNumber,0].ToString().Trim();
  214. string strPopedom = this.chkLst_Priority.SelectedItem.ToString();
  215. string tempSendStrSQL = "delete from 权限清单 where (用户编号 = '" + strUserName +"'" +
  216. " and 权限名称 = '" + strPopedom + "')";
  217. this.link.UpdateDataBase(tempSendStrSQL);
  218. }
  219. catch
  220. {
  221. MessageBox.Show("数据库中的权限修改出错!","信息");
  222. }
  223. }
  224. }
  225. }
  226. private void dgrd_Popedom_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  227. {
  228. if (this.dgrd_Popedom.CurrentCell.RowNumber >= this.ds.Tables[0].Rows.Count)//防止出现所选的用户不在数据表中的情况
  229. {
  230. return;
  231. }
  232. this.chkLst_Priority.Enabled = true;
  233. blInitial = true; //控制当【权限管理】窗体刚生成时和点击其他用户时使CheckedListBox控件中数据发生改变时不响应ItemCheck事件
  234. //以下代码实现的是当dataGrid中所选用户改变时,根据选中用户权限重新设置listBox的功能
  235. for (int i=0;i<this.chkLst_Priority.Items.Count;i++)//将listBox中所有权限设为未选中
  236. {
  237. this.chkLst_Priority.SetItemChecked(i,false);
  238. }
  239. int intRowNumber = this.dgrd_Popedom.CurrentCell.RowNumber;
  240. string selectedUserID = this.ds.Tables[0].Rows[intRowNumber][0].ToString();
  241. string tempStrSQL = "select 权限名称 from 权限清单 " + " where 用户编号 = '" + selectedUserID + "'";
  242. popedomDataTable = link.SelectDataBase(tempStrSQL);//查询所选用户权限
  243. for (int i=0;i<popedomDataTable.Rows.Count;i++)//重新设置listBox
  244. {
  245. for (int j=0;j<this.chkLst_Priority.Items.Count;j++)
  246. {
  247. if (this.chkLst_Priority.Items[j].ToString().Trim() == popedomDataTable.Rows[i][0].ToString().Trim())
  248. {
  249. this.chkLst_Priority.SetItemChecked(j,true);
  250. }
  251. }
  252. }
  253. blInitial = false;
  254. }
  255. }
  256. }