码迷,mamicode.com
首页 > 其他好文 > 详细

通用权限管理系统学习心得

时间:2015-05-26 23:13:39      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

一直相信阅读优秀的代码,是学习编程的最好方式,经过一段时间对吉日嘎拉通用权限管理系统的学习和使用,我从中受益良多,其中不乏一些优秀的设计思想,其中给我印象比较深刻的有几点,我将按照我个人的理解写下学习笔记,希望能给自己这段时间的学习留下点什么,同时也希望能别人能够通过阅读我的文章来获得一些帮助。

这篇文章我也来探讨一下数据网格设置功能的实现

每个网格的设置对应保存在本地启动目录下UserParameter的文件下的一个XML文件,其中XML文件的命名规则:窗体名称_网格名称.xml (如窗体名称FrmUser里的网格dgvUser对应的网格配置文件名:FrmUser_dgvUser.xml)

将当前窗体名称和网格名称传递给网格数据列设置界面

技术分享
1             FrmDataGridViewSetting frmDataGridViewSetting = new FrmDataGridViewSetting();
2             frmDataGridViewSetting.TargetForm = this;
3             frmDataGridViewSetting.TargetDataGridView = this.dgvCostSet;
4             frmDataGridViewSetting.ShowDialog();
View Code

数据列设置界面:

 技术分享

窗体加载事件,读取对应的配置信息:

技术分享
1            string targetFileFullName = BaseSystemInfo.StartupPath + "\\UserParameter\\" + TargetForm.Name + "_" + targetDataGridView.Name + ".xml";
2             DataSet dsDataGridViewColumns = new DataSet();
3             dsDataGridViewColumns.ReadXml(targetFileFullName);
4             grdSetting.DataSource = dsDataGridViewColumns.Tables[0];
View Code

网格上的属性允许编辑,编辑完成后,点击“确定”按钮,保存网格配置信息到本地:

技术分享
 1 string targetFileFullName = BaseSystemInfo.StartupPath + "\\UserParameter\\" + TargetForm.Name + "_" + TargetDataGridView.Name + ".xml";
 2 DataSet dsDataGridViewColumns = new DataSet(targetDataGridView.Name);
 3  dsDataGridViewColumns.Tables.Add(targetDataGridView.Name);
 4 dsDataGridViewColumns.Tables[0].Columns.Add("ColumnName", typeof(string));
 5 dsDataGridViewColumns.Tables[0].Columns.Add("HeaderText", typeof(string));
 6 dsDataGridViewColumns.Tables[0].Columns.Add("Frozen", typeof(bool));
 7 dsDataGridViewColumns.Tables[0].Columns.Add("Visible", typeof(bool));
 8 dsDataGridViewColumns.Tables[0].Columns.Add("DisplayIndex", typeof(int));
 9 dsDataGridViewColumns.Tables[0].Columns.Add("Width", typeof(int));
10             foreach (DataGridViewRow item in grdSetting.Rows)
11             {
12                 try
13                 {
14 dsDataGridViewColumns.Tables[0].Rows.Add(item.Cells["ColumnName"].Value.ToString(), item.Cells["HeaderText"].Value, item.Cells["Frozen"].Value, item.Cells["Visible"].Value, item.Index, item.Cells["Width"].Value);
15                 }
16                 catch(Exception ee)
17                 {
18                     ProcessException(ee);
19                     return;
20                 }
21             }
22             //因为一列为冻结列前面的所有也得为冻结列
23             for (int i = 0; i < dsDataGridViewColumns.Tables[0].Rows.Count - 1; i++)
24             {
25                 if (dsDataGridViewColumns.Tables[0].Rows[i]["Frozen"].ToString() == "True")
26                 {
27                     for (int j = 0; j < i; j++)
28                     {
29                         dsDataGridViewColumns.Tables[0].Rows[j]["Frozen"] = true;
30                     }
31                 }
32             }
33             dsDataGridViewColumns.WriteXml(targetFileFullName);
View Code

然后,加载页面DataGridView控件上的列属性:

技术分享
 1  1 //配置数据权限
 2  2             DataSet dsDataGridViewColumns = new DataSet();
 3  3             // 窗体的名字
 4  4             string key = targetForm.Name;
 5  5             System.Reflection.FieldInfo[] fieldInfo = targetForm.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
 6  6             //检索出DataGridViews控件
 7  7             var fieldDataGridViews = from dgv in fieldInfo
 8  8                                      where dgv.FieldType.Name.Equals("DataGridView")
 9  9                                      select dgv;
10 10             foreach (var item in fieldDataGridViews)
11 11             {
12 12                 DataGridView targetDataGridView = (DataGridView)item.GetValue(targetForm);
13 13                 // 加载事件
14 14                 LoadMouseClick(targetDataGridView, targetForm);
15 15                 string targetFileFullName = BaseSystemInfo.StartupPath + "\\UserParameter\\" + targetForm.Name + "_" + targetDataGridView.Name + ".xml";
16 16                 // 判断DataGridView配置文件是否存在,如果存在则设置列宽,如果不存在则新增文件。
17 17                 if (System.IO.File.Exists(targetFileFullName))
18 18                 {
19 19                     dsDataGridViewColumns.Tables.Clear();
20 20 dsDataGridViewColumns.ReadXml(targetFileFullName);
21 21                     // 如果列没有更新
22 22                     if (dsDataGridViewColumns.Tables.Count > 0
23 23                         && dsDataGridViewColumns.Tables[0].Rows.Count == targetDataGridView.ColumnCount)
24 24                     {
25 25                         for (int j = 0; j < targetDataGridView.ColumnCount; j++)
26 26                         {
27 27                             targetDataGridView.Columns[j].HeaderText = targetDataGridView.Columns[j].HeaderText;
28 28                             // 设置冻结列
29 29                             bool ColumnFrozen = bool.Parse(dsDataGridViewColumns.Tables[0].Select("ColumnName=‘" + targetDataGridView.Columns[j].Name + "")[0]["Frozen"].ToString());
30 30                             targetDataGridView.Columns[j].Frozen = ColumnFrozen;
31 31                             // 设置显示
32 32                             bool ColumnVisible = bool.Parse(dsDataGridViewColumns.Tables[0].Select("ColumnName=‘" + targetDataGridView.Columns[j].Name + "")[0]["Visible"].ToString());
33 33                             targetDataGridView.Columns[j].Visible = ColumnVisible;
34 34                             // 设置位置
35 35                             int DisplayIndex = int.Parse(dsDataGridViewColumns.Tables[0].Select("ColumnName=‘" + targetDataGridView.Columns[j].Name + "")[0]["DisplayIndex"].ToString());
36 36                             // 冻结列有待优化
37 37                             try
38 38                             {
39 39                 targetDataGridView.Columns[j].DisplayIndex = DisplayIndex;
40 40                             }
41 41                             catch
42 42                             { }
43 43                             // 设置列宽
44 44                             int ColumnsWidth = int.Parse(dsDataGridViewColumns.Tables[0].Select("ColumnName=‘" + targetDataGridView.Columns[j].Name + "")[0]["Width"].ToString());
45 45                             targetDataGridView.Columns[j].Width = ColumnsWidth;
46 46                         }
47 47                     }
48 48                     else
49 49                     {
50 50                         SaveDataGridViewColumnWidth(targetForm, targetDataGridView);
51 51                     }
52 52                 }
53 53                 else
54 54                 {
55 55                     if (!System.IO.Directory.Exists(BaseSystemInfo.StartupPath + "\\UserParameter"))
56 56                     {
57 57 System.IO.Directory.CreateDirectory(BaseSystemInfo.StartupPath + "\\UserParameter");
58 58                     }
59 59                     SaveDataGridViewColumnWidth(targetForm, targetDataGridView);
60 60                 }
61 61             }
View Code

 

通用权限管理系统学习心得

标签:

原文地址:http://www.cnblogs.com/Jason-Chan/p/4531607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!