//zhangkaijun
        private void BuildTabPageForOne(ResourceType _resType)
        {
            TabPage     _page     = new TabPage();
            NeuSplitter _splitter = new NeuSplitter();
            NeuPanel    _panel1   = new NeuPanel();

            _page.Controls.Add(_panel1);
            _page.Controls.Add(_splitter);

            _page.Name = _resType.Id;
            _page.Text = _resType.Name;
            _page.UseVisualStyleBackColor = true;
            _page.ImageIndex = 8;

            _splitter.Cursor = Cursors.HSplit;
            _splitter.Dock   = DockStyle.Bottom;

            _panel1.Dock = DockStyle.Fill;
            NeuTreeListView _treeList = GenTreeListView();

            _treeList.SmallImageList = this.imageList1;
            _treeList.CheckBoxes     = CheckBoxesTypes.Simple;
            _treeList.ItemChecked   += new ItemCheckedEventHandler(_treeList_ItemChecked);

            _resTreeListMap.Add(_resType.Id, _treeList);
            _panel1.Controls.Add(_treeList);

            this.nTabControl1.TabPages.Add(_page);
        }
        private NeuTreeListView GenTreeListView()
        {
            NeuTreeListView _treeList = new NeuTreeListView();

            System.Windows.Forms.TreeListViewItemCollection.TreeListViewItemCollectionComparer treeListViewItemCollectionComparer1 = new System.Windows.Forms.TreeListViewItemCollection.TreeListViewItemCollectionComparer();
            ColumnHeader columnHeader1 = new ColumnHeader();
            ColumnHeader columnHeader2 = new ColumnHeader();
            ColumnHeader columnHeader3 = new ColumnHeader();

            _treeList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { columnHeader2, columnHeader1, columnHeader3 });
            treeListViewItemCollectionComparer1.Column    = 0;
            treeListViewItemCollectionComparer1.SortOrder = System.Windows.Forms.SortOrder.Ascending;
            _treeList.Comparer = treeListViewItemCollectionComparer1;
            _treeList.Location = new System.Drawing.Point(-19, 47);
            _treeList.UseCompatibleStateImageBehavior = false;
            _treeList.MultiSelect           = false;
            _treeList.HideSelection         = false;
            _treeList.SelectedIndexChanged += new EventHandler(ResourceItem_SelectedIndexChanged);

            _treeList.ContextMenuStrip = this.nContextMenuStrip1;
            _treeList.Dock             = DockStyle.Fill;

            columnHeader1.Text  = "权限代码";
            columnHeader1.Width = 200;

            columnHeader2.Text  = "权限名称";
            columnHeader2.Width = 250;

            columnHeader3.Text  = "备注";
            columnHeader3.Width = 250;

            return(_treeList);
        }
        private void BuildTabPage(ResourceType _resType)
        {
            TabPage     _page     = new TabPage();
            NeuPanel    _panel    = new NeuPanel();
            NeuSplitter _splitter = new NeuSplitter();
            NeuPanel    _panel1   = new NeuPanel();
            NeuGroupBox _groupBox = new NeuGroupBox();

            _page.Controls.Add(_panel1);
            _page.Controls.Add(_splitter);
            _page.Controls.Add(_panel);

            _page.Name = _resType.Id;
            _page.Text = _resType.Name;
            _page.UseVisualStyleBackColor = true;
            _page.ImageIndex = 8;

            _panel.Dock   = DockStyle.Bottom;
            _panel.Height = 100;
            _panel.Controls.Add(_groupBox);

            _groupBox.Text = "选择权限";
            _groupBox.Dock = DockStyle.Fill;
            _resGroupBoxMap.Add(_resType.Id, _groupBox);
            _panel.Controls.Add(_groupBox);

            _splitter.Cursor = Cursors.HSplit;
            _splitter.Dock   = DockStyle.Bottom;

            _panel1.Dock = DockStyle.Fill;
            NeuTreeListView _treeList = GenTreeListView();

            _treeList.SmallImageList = this.imageList1;

            _resTreeListMap.Add(_resType.Id, _treeList);
            _panel1.Controls.Add(_treeList);
            CreateSelectOptions(_resType.Id, _groupBox);

            this.nTabControl1.TabPages.Add(_page);
        }
        private void SelectOperation()
        {
            ClearSelectedOptions();

            TreeNode _node = tvRole.SelectedNode;

            if (_node == null || _node.Tag == null)
            {
                return;
            }

            NeuTreeListView _list = _resTreeListMap[nTabControl1.SelectedTab.Name];

            if (_list == null || _list.SelectedItems.Count == 0)
            {
                return;
            }
            TreeListViewItem _item = _list.SelectedItems[0];

            if ((_item.Tag as Priv).Id == "root")
            {
                return;
            }

            IDictionary <Priv, IList <Neusoft.Privilege.BizLogic.Model.Operation> > _permissions = null;

            try
            {
                PrivilegeService _proxy = Common.Util.CreateProxy();

                using (_proxy as IDisposable)
                {
                    _permissions = _proxy.GetPermission(nTabControl1.SelectedTab.Name, (_item.Tag as Priv).Id, (_node.Tag as Role));
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "提示");
                return;
            }

            if (_permissions == null || _permissions.Count == 0)
            {
                return;
            }

            foreach (KeyValuePair <Priv, IList <Neusoft.Privilege.BizLogic.Model.Operation> > _pair in _permissions)
            {
                foreach (Neusoft.Privilege.BizLogic.Model.Operation _opera in _pair.Value)
                {
                    Control _c = _resGroupBoxMap[nTabControl1.SelectedTab.Name].Controls[_opera.Id];

                    if (_c != null && _c.GetType() == typeof(NeuCheckBox))
                    {
                        (_c as NeuCheckBox).Checked = true;
                    }
                    else if (_c != null && _c.GetType() == typeof(NeuRadioButton))
                    {
                        (_c as NeuRadioButton).Checked = true;
                    }
                }
                break;
            }
        }
        void SavePermission()
        {
            TreeNode _node = tvRole.SelectedNode;

            if (_node == null || _node.Tag == null)
            {
                MessageBox.Show("请选择待授权角色!", "提示");
                return;
            }
            NeuTreeListView _list = _resTreeListMap[nTabControl1.SelectedTab.Name];

            TreeListViewItem _item          = null;
            string           _permissionExp = "";

            if (_resTreeListMap[nTabControl1.SelectedTab.Name].CheckBoxes != CheckBoxesTypes.Simple)
            {
                if (_list == null || _list.SelectedItems.Count == 0 || ((_list.SelectedItems[0].Tag as Priv).Id == "root"))
                {
                    MessageBox.Show("请选择待授权资源!", "提示");
                    return;
                }
                _item = _list.SelectedItems[0];

                _permissionExp = GetSelectedPermission();
                if (string.IsNullOrEmpty(_permissionExp))
                {
                    MessageBox.Show("请选择操作权限!", "提示");
                    return;
                }
            }

            try
            {
                PrivilegeService _proxy = Common.Util.CreateProxy();
                //全部的Res
                List <Neusoft.Privilege.BizLogic.Model.Priv> allRes = new List <Priv>();
                //选中的Res
                List <Neusoft.Privilege.BizLogic.Model.Priv> res = new List <Priv>();

                NFC.Management.PublicTrans.BeginTransaction();
                if (_resTreeListMap[nTabControl1.SelectedTab.Name].CheckBoxes == CheckBoxesTypes.Simple)
                {
                    foreach (TreeListViewItem item in _resTreeListMap[nTabControl1.SelectedTab.Name].CheckedItems)
                    {
                        if ((item.Tag as Priv).Id != "root")
                        {
                            res.Add(item.Tag as Priv);
                        }
                    }

                    foreach (TreeListViewItem item in _resTreeListMap[nTabControl1.SelectedTab.Name].Items)
                    {
                        allRes.Add(item.Tag as Priv);

                        SetAllRes(allRes, item.Items);
                    }

                    GetAllChildRole(tvRole.SelectedNode.Nodes);
                    GetDeleteRes(res);

                    //当角色为系统管理员时,不考虑级联删除
                    if ((_node.Tag as Role).Id == "roleadmin")
                    {
                        deleteResList  = new List <Priv>();
                        deleteRoleList = new List <Role>();
                    }

                    int rtn = _proxy.SavePermission((_node.Tag as Role), allRes, res, _permissionExp, deleteResList, deleteRoleList);

                    NFC.Management.PublicTrans.Commit();
                    if (rtn == 0)
                    {
                        NFC.Management.PublicTrans.RollBack();
                        MessageBox.Show("保存失败!");
                        return;
                    }
                }
                else
                {
                    int rtn = _proxy.SavePermission(nTabControl1.SelectedTab.Name, (_node.Tag as Role), (_item.Tag as Priv), _permissionExp);
                    NFC.Management.PublicTrans.Commit();
                    if (rtn == 0)
                    {
                        NFC.Management.PublicTrans.RollBack();
                        MessageBox.Show("保存失败!");
                        return;
                    }
                    //父级处理,太麻烦...有需求再说吧
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "提示");
                return;
            }

            MessageBox.Show("保存成功!", "提示");
        }