首页 > 编程语言 >c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(四)组织机构管理

c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(四)组织机构管理

时间:2023-10-26 15:36:17浏览次数:41  
标签:node 自定义 show c# personnelNode BPM user personnel treeView

 

 组织机构管理
组织机构可以是一个公司 也可以是多个公司,整体设计可以根据自己的需求去使用
左侧树形结构和下拉框是同步获取数据,做到实时数据刷新
代码如下
调用代码

 Bll_oa_department.LoadTreeViewAndComboBox(cb_parent_id, tv_department,false,false);

类代码

        private static string toadd = "├";
        public static void LoadTreeViewAndComboBox(ComboBox cb, TreeView treeView,bool is_show_personnel,bool is_show_checkbox)
        {
            ImageList imageList = new ImageList();
            imageList.Images.Add("folder", Properties.Resources.folder);
            imageList.Images.Add("user", Properties.Resources.user);
            imageList.Images.Add("user_red", Properties.Resources.user_red);
            imageList.ImageSize = new System.Drawing.Size(32, 32);


            ArrayList list = new ArrayList();
            if (treeView != null)
                treeView.Nodes.Clear();
            treeView.ImageList = imageList;
            var departmentList = GetDataByParentID(0);
            foreach (var u in departmentList)
            {
                int typeId = u.id;
                string typeName = u.name;
                TreeNode node = new TreeNode();
                node.Text = Convert.ToString(typeName);
                node.Name = Convert.ToString(typeId);
                node.ImageKey = "folder"; // 设置子节点1的图标索引
                node.SelectedImageKey = "folder";
                if (treeView != null)
                    treeView.Nodes.Add(node);
                list.Add(new System.Collections.DictionaryEntry(typeId, toadd + typeName));
                BindData(typeId, node, list, is_show_personnel, is_show_checkbox);
            }
            if (treeView != null)
                treeView.ExpandAll();

            if (cb != null)
            {
                cb.DataSource = list;
                cb.DisplayMember = "Value";
                cb.ValueMember = "Key";
            }
            if(is_show_checkbox)
            // 需要判断是不是需要打开 选择框
            treeView.CheckBoxes = true;
        }

        private static void BindData(int parentId, TreeNode parentNode, ArrayList list, bool is_show_personnel,bool is_show_checkbox)
        {
            var List = GetDataByParentID(parentId);

            if (is_show_personnel)
            {
                var personnelList = Bll.Bll_oa_user.GetDataByDepartmentIDUserList(parentId); // 获取当前节点下的人员列表      
                foreach (var personnel in personnelList)
                {
                    TreeNode personnelNode = new TreeNode();
                    personnelNode.Text = personnel.username;
                    personnelNode.Name = Convert.ToString(personnel.id);
                    if (personnel.gender == "男")
                    {
                        personnelNode.ImageKey = "user";
                        personnelNode.SelectedImageKey = "user";
                    }
                    else
                    {
                        personnelNode.ImageKey = "user_red";
                        personnelNode.SelectedImageKey = "user_red";
                    }
                    // 在节点前添加复选框
                    // personnelNode.Checked = true; // 根据实际情况设置是否选中
                    parentNode.Nodes.Add(personnelNode);
                }
            }



            foreach (var u in List)
            {
                int typeId = u.id;
                string typeName = u.name;
                TreeNode node = new TreeNode();
                node.Text = Convert.ToString(typeName);
                node.Name = Convert.ToString(typeId);
                node.ImageKey = "folder"; // 设置子节点1的图标索引
                node.SelectedImageKey = "folder";
                parentNode.Nodes.Add(node);
                toadd += "┴";
                list.Add(new System.Collections.DictionaryEntry(typeId, toadd + typeName));
                BindData(typeId, node, list, is_show_personnel, is_show_checkbox);
                toadd = toadd.Substring(0, toadd.Length - 1);
            }
        }

 

标签:node,自定义,show,c#,personnelNode,BPM,user,personnel,treeView
From: https://www.cnblogs.com/cxyyn/p/17789504.html

相关文章

  • 卸载wps之后office文件图标变白和默认打开软件改不了问题
    (3封私信/23条消息)卸载WPS后,桌面office文件图标变白,如何解决?-知乎(zhihu.com)  修复好之后就行,win11亲测可用......
  • c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(四)角色与权限管理
    角色对应菜单的功能,是为了方便用户相同角色的时候避免了单独为用户设置菜单权限用户后面只需要对应的选择角色即可享有角色下的导航功能 角色与菜单来控制首页按钮是都可以操作Enabled是true还是false//获取所有菜单按钮Enabled=false;varall_menu=Bll......
  • 无涯教程-Clojure - pop函数
    对于列表或队列,返回没有第一项的新列表/队列,对于向量,返回没有最后一项的新向量。pop-语法以下是语法。(popvec)参数   - "vec"是元素的向量集。返回值 - 返回不带最后一项的新向量。pop-示例(nsclojure.examples.example(:gen-class))(defnexamp......
  • Codeforces Round 904 (Div. 2)
    A.没想到是暴力,做的很晚B.手玩一下即可C.MediumDesign给定一个长为\(n\)的数组\(a\),和若干条线段\([l_i,r_i]\),你可以选择这其中的任何若干条线段,并让\(a_l\sima_r\)均\(+1\).请你计算可以得到的\(\max(a)-\min(a)\).这题本来想的是先把所有的加进去,得到......
  • 服务器常见问题排查(一)——cpu占用高、上下文频繁切换、频繁GC
    一般而言cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack来分析对应的堆栈情况。使用jstack排查占用率问题当使用jstack排查占用率问题时,可以按照以下步骤进行:首先,使用......
  • c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(三)设计程序导航菜单
         程序的导航菜单是开发者前提定义好的功能,所以不涉及自主添加删除,只需要后期针对用户对应的角色进行权限控制即可,所以设计为属性结构显示导航菜单预览的一个功能。......
  • chrome新版本http自动跳转https问题解决
    虽然是个好功能,但是部分内网业务还没做好https兼容,有的时候手工访问,还是变成https 解决办法:chrome://flags/找到:HTTPSUpgrades,修改disabled,重启解决,当然这个需要需要用户去调整,真正还需要服务去兼容https  ......
  • 传输层协议 TCP
    TCP(TransportControlProtocol)是一个传输层协议,提供Host-To-Host数据的可靠传输,支持全双工,是一个连接导向的协议。TCP提供的是Host-To-Host传输,一台主机通过TCP发送数据给另一台主机。 TCP协议往上是应用到应用(Application-To-Application)的协议。什么是应用到应用......
  • GUI_DOWNLOAD函数导出EXCEL内容出现了串列
    请教个问题 ,我现在ZPA400这个程序, 用 GUI_DOWNLOAD 下载的EXCEL文件,内容出现了串列,结果如下 导致串列的具体字段为:ZHR018301字段内容为:应安保管控调整要求,员工进入厂区禁止携带智能手机,警卫自行拆除闸机、移位监控、搬运手机柜节省RMB1200元,按奖惩规定5.3.4.25节省费用......
  • Generative AI 新世界 | Falcon 40B 开源大模型的部署方式分析
    在上期文章,我们探讨了如何在自定义数据集上来微调(fine-tuned)模型。本期文章,我们将重新回到文本生成的大模型部署场景,探讨如何在AmazonSageMaker上部署具有400亿参数的Falcon40B开源大模型。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开......