开源客户关系管理系统SplendidCRM下的二次开发

SplendidCRM是.net环境下比较优秀的开源客户关系管理系统。目前有关中文的资料比较少,在官方网站针对二次开发的内容也不多。结合网络中查到的相关资料和自己的实践,下面以一个新模块的开发过程为例,将SplendidCRM下的二次开发步骤及相关注意的地方描述如下,以供同行及感兴趣的参考。

1、 创建表,如需要定制字段,还要创建以_cstm结尾的表,如有多对多的关系,还要创建关系表。

表一般含有以下字段:ID(主键)、DELETED(是否删除标志)、CREATED_BY(创建人)、DATE_ENTERED(录入时间)、MODIFIED_USER_ID(修改用户的ID)、DATE_MODIFIED(修改时间)、ASSIGNED_USER_ID(指定的用户ID)、TEAM_ID(团队ID)。

_cstm一般含有以下字段:ID_C(主键)。

2、创建用于更新及删除数据的存储过程。

存储过程命名:sp模块名_Update、sp模块名_Delete。

然后调用_devtools/procedures.aspx可以自动产生调用存储过程的代码文件SqlProc.cs,此文件位于_code下,然后将此文件覆盖掉_code/DbLevel目录下的SqlProc.cs文件。

 

3、  创建视图:至少要包括核心视图、以_List和_Edit结尾的视图,视图一般以vw开头。

 

4、调用存储过程spMODULES_InsertOnly往系统中加入新模块信息。此存储过程参数说明:

 

Procedure dbo.spMODULES_InsertOnly

         ( @MODIFIED_USER_ID  uniqueidentifier –修改有用户ID

         , @MODULE_NAME       nvarchar(25) –模块名称

         , @DISPLAY_NAME      nvarchar(50)  --模块的显示名称,用术语来描述

         , @RELATIVE_PATH     nvarchar(50)   --模块所处目录的相对路径

         , @MODULE_ENABLED    bit                --是否启用此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @TAB_ENABLED       bit          --是否在菜单上显示此模块,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @TAB_ORDER         int         --菜单上显示的次序,也可以通过系统管理->工作室-> “配置模块”功能来改变此属性

         , @PORTAL_ENABLED    bit –是否显示在门户的标志

         , @CUSTOM_ENABLED    bit       --是否可以让使用者来定制字段(需要用以_cstm结尾的表)

         , @REPORT_ENABLED    bit –是否启用报表的标志

         , @IMPORT_ENABLED    bit        -是否可以导入数据的标志

         , @IS_ADMIN          bit  ----是否仅管理员使用标志

         , @TABLE_NAME        nvarchar(30) –模块对应的表名

         )

 

5、调用存储过程spSHORTCUTS_InsertOnly创建快捷方式。或通过系统管理->工作室->管理捷径->创建快捷方式来创造快捷方式。此存储过程参数说明:

 

        Procedure dbo.spSHORTCUTS_InsertOnly

         ( @MODIFIED_USER_ID  uniqueidentifier  --修改人的ID

         , @MODULE_NAME       nvarchar( 25)   --模块名称

         , @DISPLAY_NAME      nvarchar(150)    --显示名称,为术语名称

         , @RELATIVE_PATH     nvarchar(255)     --快捷方式命令的相对路径

         , @IMAGE_NAME        nvarchar( 50)    --图片的名称

         , @SHORTCUT_ENABLED  bit             --是否启用的标志

         , @SHORTCUT_ORDER    int             --快捷方式的显示次序

         , @SHORTCUT_MODULE   nvarchar( 25)   --快捷方式权限控制的模块

         , @SHORTCUT_ACLTYPE  nvarchar(100)    --权限的类型

         )

 

 

6、调用存储过程spDYNAMIC_BUTTONS_CopyDefault创建动态按钮,需要调用二次分别创建EditView和DetailView的动态按钮。或通过系统管理->工作室->管理动态按钮->创建动态按钮来创造动态按钮。

   一般需要调用以下语句:

 

        exec  dbo.spDYNAMIC_BUTTONS_CopyDefault '.EditView', ‘模块名.EditView', '模块名';

       exec dbo.spDYNAMIC_BUTTONS_CopyDefault '.DetailView', '模块名.DetailView', '模块名';

 

    此存储过程参数说明:

 

 

        Procedure dbo.spDYNAMIC_BUTTONS_CopyDefault

         ( @SOURCE_VIEW_NAME    nvarchar(50) –系统存在的默认的动态按钮名

         , @NEW_VIEW_NAME       nvarchar(50) –新的模块视图的名称

         , @MODULE_NAME         nvarchar(25) –模块名

         )

 

7、创建列表的列的信息。

涉及到GRIDVIEWS与GRIDVIEWS_COLUMNS表。是主细表结构,插入列的信息与列的类型有关,分别调用spGRIDVIEWS_COLUMNS_InsBound、spGRIDVIEWS_COLUMNS_InsBoundDate、spGRIDVIEWS_COLUMNS_InsBoundList、spGRIDVIEWS_COLUMNS_InsField、spGRIDVIEWS_COLUMNS_InsHyperLink。这个可以通过界面来配置。

调用存储过程spGRIDVIEWS_InsertOnly创建列表的主表信息。

        exec dbo.spGRIDVIEWS_InsertOnly '模块名.L名称istView', '模块名', '获取数据的视图(一般以_List结尾)';

   然后调用系统管理->页面布局->网格的布局来创建列表的列的信息。

8、创建查看的列的信息。

涉及到三个表DETAILVIEWS、DETAILVIEWS_FIELDS、DETAILVIEWS_RELATIONSHIPS。一个主表,两个细表。一个是查看的列的信息表,一个是查看对象的关系表。列的信息根据类型不同,分别调用spDETAILVIEWS_FIELDS_InsBlank、spDETAILVIEWS_FIELDS_InsBound、spDETAILVIEWS_FIELDS_InsBoundList、spDETAILVIEWS_FIELDS_InsButton、spDETAILVIEWS_FIELDS_InsCheckBox、spDETAILVIEWS_FIELDS_InsertOnly、spDETAILVIEWS_FIELDS_InsHyperLink。

    调用存储过程spDETAILVIEWS_InsertOnly插入查看的主表信息。

       exec dbo.spDETAILVIEWS_InsertOnly '模块名.DetailView', '模块名', '获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';

   然后调用系统管理->页面布局->查看的布局来创建查看的列的信息。

9、创建编辑的列的信息。

 

涉及到两个表EDITVIEWS、EDITVIEWS_FIELDS。

调用存储过程spEDITVIEWS_InsertOnly插入编辑的主表信息。

exec dbo.spEDITVIEWS_InsertOnly '模块名.EditView', '模块名', ''获取数据的视图名称(一般以_Edit结尾)', '15%', '35%';

   然后调用系统管理->页面布局->编辑的布局来创建编辑的列的信息。

10、在web site目录下创建模块的文件夹,将相似模块的文件夹下的文件拷贝到新的模块的文件夹下。重命名文件中的命名空间、文件及相关的类名。文件夹下的主要文件如下:

 

 

       ListView.ascx 显示数据网格的控件。

       DetailView.ascx显示数据的详细信息的控件。

       EditView.ascx编辑数据的控件。

       NewRecord.ascx创建新纪录的控件。

       MassUpdate.ascx批量更新的控件。

   必须要修改ListView.asc.cs、DetailView.ascx.cs、EditView.ascx.cs文件中InitializeComponent()、Page_Load()、Page_Command()函数中相应的地方,读一下代码就知道了。

posted @   遥望星空  阅读(601)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2012-01-17 XMLSpy 2011中文破解版
2011-01-17 MaxtoCode对.Net程序加密的原理及解密探讨
2011-01-17 由浅至深,谈谈.NET混淆原理 [转]
2010-01-17 Possible SOAP version mismatch: Expecting http://schemas.xmlsoap.org/soap/envelope
点击右上角即可分享
微信分享提示