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()函數中相應的地方,讀一下代碼就知道了。