在一些场合里面,我们需要对一些记录进行颜色标注处理,以标记记录的信息重要性或者进行类别区分,如在客户关系管理系统里面,我们需要对客户信息进行不同颜色的标注,方便对不同类别的管理,毕竟颜色区分还是比较直观快速的一种。本随笔介绍在我们的CRM客户关系管理系统中,对客户信息的标注处理和显示区分的实现。

1、客户信息的分类

在一个CRM客户关系管理系统里面,客户信息的种类比较多,用来标记不同类别,同时也是方便我们对不同类别信息进行的快速筛选查询,如下是客户关系管理系统里面对于客户信息的展示,左边树形列表里面,列出很多客户属性的类别。

如客户状态、客户类型、客户级别、客户行业等等不同的属性分类,除了这些分类,我们还可以对客户记录进行颜色标注,这样可以更加直观区分这个客户属于那种特定的类型,为了方便,我们预设几种比较好区分的颜色进行处理即可,不需要设计太多的颜色,以便以7个为标准就可以了,太多也没有意义。

在编辑客户信息的时候,我们可以设置该记录的颜色选项,如下面界面所示。

设置了不同类别颜色的客户信息后,我们可以在记录的行里面用不同的颜色进行区分显示,这样看起来就更加直观了。

下面我们来看看具体的实现过程代码。

2、颜色标注的实现过程

在编辑界面添加相关的标签控件和一个下拉按钮的控件,如下界面所示。

其中标注颜色的下拉按钮是DevExpress的DropDownButton控件。

初始化创建下拉按钮的代码如下所示。

        /// <summary>/// 创建标记颜色的下拉按钮/// </summary>/// <returns></returns>private DXPopupMenu CreateDXPopupMenu(){var menu = new DXPopupMenu();var dict = ColorHelper.ColorDict;foreach(string key in dict.Keys){menu.Items.Add(CreateMenuItem(key, dict[key]));}//menu.Items.Add(CreateMenuItem("橙色", Color.Orange));//menu.Items.Add(CreateMenuItem("黄色", Color.Yellow));//menu.Items.Add(CreateMenuItem("绿色", Color.Green));//menu.Items.Add(CreateMenuItem("蓝色", Color.Blue));//menu.Items.Add(CreateMenuItem("紫色", Color.Purple));//menu.Items.Add(CreateMenuItem("黑色", Color.Black));return menu;}

其中我们在重构的时候,移除了硬编码的颜色记录,改用一个辅助类来处理颜色字典,这样可以方便修改。

    internal static class ColorHelper{private static Dictionary<string, Color> colorDict  = new Dictionary<string, Color>();static ColorHelper(){colorDict.Add("红色", Color.Red);colorDict.Add("橙色", Color.Orange);//colorDict.Add("黄色", Color.Yellow);colorDict.Add("绿色", Color.Green);colorDict.Add("蓝色", Color.Blue);colorDict.Add("紫色", Color.Purple);colorDict.Add("黑色", Color.Black);colorDict.Add("无", Color.Empty);}/// <summary>/// 颜色字典/// </summary>public static Dictionary<string, Color>  ColorDict{get { return colorDict; }}}

创建按钮并添加对应的单击事件代码

        private DXMenuItem CreateMenuItem(string text, Color color){var item = new DXMenuItem(text, OnItemClick);item.Appearance.BackColor = color;return item;}private void OnItemClick(object sender, EventArgs e){DXMenuItem item = sender as DXMenuItem;if(item != null){this.lblMarkColor.BackColor = item.Appearance.BackColor;//更新颜色string color = ColorTranslator.ToHtml(this.lblMarkColor.BackColor);if(!string.IsNullOrEmpty(ID)){BLLFactory<Customer>.Instance.MarkColor(ID, color);}}}

其中我们注意到了,我们使用

ColorTranslator.ToHtml

函数来转换对应的颜色代码到一个字符串来存储数据库里面,这个函数是系统内辅助类的函数。

当我们需要展示字符串的颜色信息,需要把它转换为对应的颜色枚举,如下所示。

                    //标记颜色if (!string.IsNullOrEmpty(info.MarkColor)){this.lblMarkColor.BackColor = ColorTranslator.FromHtml(info.MarkColor);}

在列表界面 里面,如果我们需要设置某个单元格颜色信息,那么我们通过添加这个实现就可以。

            this.winGridViewPager1.gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);

       void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e){string columnName = e.Column.FieldName;if (columnName == "Name"){bool deleted = (bool)this.winGridViewPager1.gridView1.GetRowCellValue(e.RowHandle, "Deleted");Color color = Color.White;if (deleted){e.Appearance.BackColor = Color.Red;e.Appearance.BackColor2 = Color.LightCyan;}//根据用户选择的标记颜色,设置单元格的颜色信息string markcolor = string.Concat(this.winGridViewPager1.gridView1.GetRowCellValue(e.RowHandle, "MarkColor"));if(!string.IsNullOrEmpty(markcolor)){color = ColorTranslator.FromHtml(markcolor);e.Appearance.BackColor = color;e.Appearance.BackColor2 = Color.White;}}}

在客户信息的左侧树形列表里面,我们初始化了一个标记颜色的树形列表,这里也是根据颜色信息进行一个条件的处理即可。

初始化树形列的代码如下所示。

            //标记颜色的树形列表展示var colorNode = new TreeNode("标记颜色", 0, 0);this.treeView1.Nodes.Add(colorNode);var dict = ColorHelper.ColorDict;foreach (string key in dict.Keys){TreeNode subNode = new TreeNode(key, 9, 9);var color = ColorTranslator.ToHtml(dict[key]);string filter = "";if (string.IsNullOrEmpty(color)){filter += "(MarkColor ='' or MarkColor is null) ";}else{filter = string.Format("{0}='{1}' ", "MarkColor", color);}subNode.Tag = filter;//增加数值//如果过滤条件不为空,那么需要进行过滤if (!string.IsNullOrEmpty(this.ShareUserCondition)){filter = string.Format(" {0} AND {1}", this.ShareUserCondition, filter);}int count = BLLFactory<Customer>.Instance.GetRecordCount(filter);subNode.Text += string.Format("({0})", count);//避免透明不显示字体subNode.ForeColor = dict[key];colorNode.Nodes.Add(subNode);}

这样我们就可以根据树节点的条件来进行过滤数据了。

我们再来回顾下列表界面的整体情况。

转载于:https://www.cnblogs.com/wuhuacong/p/10450875.html

客户关系管理系统中实现对客户信息标记颜色的处理相关推荐

  1. 什么是客户关系管理系统?有哪些分类?

    客户关系管理系统(CRM)是以实现企业以客户为中心的理念为目的,运用先进的管理思想和各种技术对客户数据信息进行管理的一种信息系统.客户关系管理系统对企业营销时与客户发生的交互行为中所产生的信息进行记录 ...

  2. CRM客户关系管理系统开发第十七讲——实现客户拜访记录管理模块中分页查询客户拜访记录列表的功能

    在CRM客户关系管理系统中,客户的拜访是很重要的一个环节,由业务员面见客户并介绍公司的相关的业务,在业务员回到公司以后,需要对此次的拜访的整个过程记录下来,记录中需要包含拜访的客户的姓名,拜访的时间以 ...

  3. 【Java项目实战】CRM客户关系管理系统

    客户关系管理系统,是指利用软件.硬件和网络技术,为企业建立一个客户信息收集.管理.分析和利用的信息系统.以客户数据的管理为核心,记录企业在市场营销和销售过程中和客户发生的各种交互行为,以及各类有关活动 ...

  4. 基于java的CRM客户关系管理系统的设计与实现

    本科毕业设计(论文) 题 目: 基于java的CRM客户关系管理系统的设计与实现 专题题目: 说 明 请按以下顺序编排: 封面 任务书 开题报告 中外文摘要及关键词 目录 正文 附录(可选) 参考文献 ...

  5. 如何通过低代码开发平台实现CRM客户关系管理系统

    企业生存的根本是客户资源,因此客户关系的管理对于企业来说至关重要.目前我国中小企业对于客户的管理方法不够重视,以致于客户外流.客户转化率不高.而CRM客户关系管理系统有助于企业培养和增强客户关系.下面 ...

  6. 客户关系管理系统类毕业论文文献包含哪些?

    本文是为大家整理的客户关系管理系统主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为客户关系管理系统选题相关人员撰写毕业论文提供参考. 1.[期刊论文]基于JavaEE的客户关系管理系统 ...

  7. 基于Python+Django的客户关系管理系统

    基于Python+Django的客户关系管理系统  源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 随着市场经济的深入发展,市场竞争.行业竞争越演越 ...

  8. 本科毕业设计-软件工程-汽车销售客户关系管理系统

    仅供学习参考,严禁盗用,商用!!! 摘 要 随着国家的快速发展,人民对物质生活的需求也在逐渐增加,其中汽车需求是当前人民最主要的增长需求之一.随着汽车市场的不断扩大,汽车销售公司也面临着更大的挑战,需 ...

  9. 【企业信息化】第1集 免费开源ERP: Odoo 16 CRM客户关系管理系统

    文章目录 前言 一.概览 二.使用功能 1.加快销售速度 2.销售线索 3.机会 4.客户 5.高效沟通 6.报告 7.集成 三.总结 前言 世界排名第一的免费开源ERP: Odoo 16 CRM客户 ...

最新文章

  1. BERT为什么是NLP的革新者
  2. 在论坛中出现的各种疑难问题:性能优化
  3. 最大整数扩展欧几里得
  4. python怎么在电脑上使用-使用python在本地电脑上快速处理数据
  5. [Issue Fixed]-repo-error: .repo/manifests/: contains uncommitted changes
  6. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能
  7. Docker~从Dockerfile到Container的过程
  8. web存储机制localStorage和sessionStorage
  9. 尚硅谷面试第一季-21消息队列在项目中的应用
  10. [翻译]禅与文件和文件夹组织的艺术 上
  11. java基础之输入语句
  12. centos6 挂载ntfs格式移动硬盘
  13. (项目笔记)opencv人脸识别
  14. 【正点原子MP157连载】第二十八章 A7和M4联合调试-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  15. MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统
  16. cmd命令查看路由器上记录的IP地址与MAC地址(ARP表)
  17. vue项目 设置scrollTop不起作用(解决方法及原因)
  18. (三)兴趣对于工作的重要性
  19. Python正则表达式re.sub功能详解
  20. Cisco CCNP认证642-902题库资讯

热门文章

  1. canvas 绘制直线 并选中_javascript自学记录:canvas绘图
  2. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
  3. 金三银四的面试黄金季节,Android面试题来了!
  4. SGU 210 Acdream 1227 Beloved Sons KM
  5. 1212: [HNOI2004]L语言
  6. UserWarning: Matplotlib is currently using agg,which is a non-GUI backend, so cannot show the figure
  7. Intellij IDEA 2019中Tomcat的部署
  8. 查找树的指定层级_非递归层次遍历方法实现二叉树中指定节点的层次数查找
  9. keras_contrib 安装
  10. 机构借贷平台 Maple 将上线以太坊主网并开启流动性挖矿