惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
U
Unit 42
Y
Y Combinator Blog
I
InfoQ
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Microsoft Security Blog
Microsoft Security Blog
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
C
Check Point Blog
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
T
Tailwind CSS Blog

博客园 - 漂泊者

SplendidCRM的个性化配置 开源CRM软件SplendidCrm的中文语言包 开源CRM的选择 开发模式的思考 双击打不开程序而是打开属性的解决方法 关闭移动硬盘或光盘的自动扫描 查询条件组件 日程排序 内嵌的主表明细显示 编译错误BC30318的解决方法 调试dnn4.0时出现的问题及解决办法 对NDoc支持.net2.0的异常分析及解决 《Visual Studio.NET Tips and Tricks》一书翻译下载 《Visual Studio.NET Tips and Tricks》第五章的翻译 《Visual Studio.NET Tips and Tricks》第四章的翻译 《Visual Studio.NET Tips and Tricks》第三章的翻译 《Visual Studio.NET Tips and Tricks》第二章的翻译 《Visual Studio.NET Tips and Tricks》第一章的翻译 《Visual Studio.NET Tips and Tricks》目录
开源客户关系管理系统SplendidCRM下的二次开发
漂泊者 · 2009-01-14 · via 博客园 - 漂泊者

      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模块名_Updatesp模块名_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创建动态按钮,需要调用二次分别创建EditViewDetailView的动态按钮。或通过系统管理->工作室->管理动态按钮->创建动态按钮来创造动态按钮。

   一般需要调用以下语句:

        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、创建列表的列的信息。

涉及到GRIDVIEWSGRIDVIEWS_COLUMNS表。是主细表结构,插入列的信息与列的类型有关,分别调用spGRIDVIEWS_COLUMNS_InsBoundspGRIDVIEWS_COLUMNS_InsBoundDatespGRIDVIEWS_COLUMNS_InsBoundListspGRIDVIEWS_COLUMNS_InsFieldspGRIDVIEWS_COLUMNS_InsHyperLink。这个可以通过界面来配置。

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

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

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

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

涉及到三个表DETAILVIEWSDETAILVIEWS_FIELDSDETAILVIEWS_RELATIONSHIPS。一个主表,两个细表。一个是查看的列的信息表,一个是查看对象的关系表。列的信息根据类型不同,分别调用spDETAILVIEWS_FIELDS_InsBlankspDETAILVIEWS_FIELDS_InsBoundspDETAILVIEWS_FIELDS_InsBoundListspDETAILVIEWS_FIELDS_InsButtonspDETAILVIEWS_FIELDS_InsCheckBoxspDETAILVIEWS_FIELDS_InsertOnlyspDETAILVIEWS_FIELDS_InsHyperLink

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

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

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

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

涉及到两个表EDITVIEWSEDITVIEWS_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()函数中相应的地方,读一下代码就知道了。