蓝色信仰

博客园 首页 新随笔 联系 订阅 管理

  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 on 2012-02-23 14:09  蓝色信仰  阅读(330)  评论(0)    收藏  举报