本篇介紹HFun.快速開發平臺的另一項系統常用功能:系統數據或參數選擇,主要應用在表單錄入中信息的選擇,如類別,編號等。先貼出本系統實現的頁面效果:
如上圖所示,系統中將參數的選擇統一展現爲該方式,開發人員可通過後臺的配置添加自己想要實現的數據選擇對象,系統中該功能主要實現的功能有:
1、開發人員或系統運維人員可通過系統配置工具調整數據選項參數,可增、刪、改選擇對象,實現0編碼即可創建數據選擇對象,並對配置信息進行有效性驗證。
2、通過系統配置工具可定義待選項數據,也可定義默認的已選項數據。
3、已選項的數據來源擴展爲系統設置默認或由URL傳遞實現默認選項。
4、全程的異步數據處理,對系統參數進行有效性的判斷。
5、可對已選項進行前後排序操作。
6、確定選項後可自定義保存方法,可自定義主、從表的數據保存,也可定義將選項value及name返回,自定義回調方法實現業務功能。
7、同一配置選項可用於多個客戶程序。
系統的配置界面如下:
程序部分代碼:
1、客戶端的數據請求:
1 //初始化數據 2 function InitData(_isDefaultItem, _isInitSelected) { 3 var _selID = ""; 4 if (_isDefaultItem == "Y") { 5 $("#DrpSelect option").each(function () { 6 _selID += $(this).val() + ","; 7 }); 8 } 9 AjaxJson("/Common/CommonSelect/ajax_GetSelectData.ashx", 10 { 11 FriendID: $('#P_FriendID').val(), 12 IsSelectItem: _isDefaultItem, 13 Param: $('#P_Param').val(), 14 SelectCode: $('#P_SelectCode').val(), 15 SelectItem: _selID, 16 SearchKey: $('#txt_Search').val() 17 }, 18 function (data) { 19 if (data._BackState == "1") {//加載成功 20 //初始化待選項 21 $("#DrpSupply").empty(); 22 $.each(data._BackData.H_SupplyData, function (i) { 23 var _item = data._BackData.H_SupplyData[i]; 24 $("#DrpSupply").append("<option value='" + _item.D_Value + "'>" + _item.D_Name + "</option>"); 25 }); 26 //初始化已選項,參數指定加載時才加載,兼容查詢模式,查詢時不加載已選項 27 if (_isInitSelected == true) { 28 $("#DrpSelect").empty(); 29 $.each(data._BackData.H_SelectedData, function (i) { 30 var _item = data._BackData.H_SelectedData[i]; 31 $("#DrpSelect").append("<option value='" + _item.D_Value + "'>" + _item.D_Name + "</option>"); 32 }); 33 } 34 } else {//加載失敗 35 ShowError(data._BackMessage); 36 return; 37 } 38 }); 39 };
2、待選項的數據處理:
1 /// <summary> 2 /// 獲取已選項 3 /// </summary> 4 /// <returns></returns> 5 public List<ParamData.HfKeyValueItem> GetSelectedData() 6 { 7 //已選項 8 List<ParamData.HfKeyValueItem> _SelectedData = new List<ParamData.HfKeyValueItem>(); 9 string sqlSelect = string.Format("select * from ({0})T where 1=1 ", _Base_TcCommonSelectROR.MCS_SupplySQL); 10 if (_Base_TcCommonSelectROR.MCS_SelectSource == "Param" || _Criteria.IsSelectItem == "Y") 11 {//來源於參數,可能爲系統設置來源參數,也可能是數據請求時指定使用傳遞參數 12 string _selectItem = GetSelectedItems(); 13 if (!string.IsNullOrEmpty(_selectItem)) 14 { 15 sqlSelect += string.Format(" and {0} in({1})", _Base_TcCommonSelectROR.MCS_ValueField, _selectItem); 16 } 17 else 18 { 19 //傳遞參數爲空時說明沒有選擇數據,清空SQL 20 sqlSelect = ""; 21 } 22 } 23 else if (_Base_TcCommonSelectROR.MCS_SelectSource == "SQL") 24 {//已選項來源於SQL語句 25 if (!string.IsNullOrEmpty(_Base_TcCommonSelectROR.MCS_SelectSQL)) 26 { 27 sqlSelect += string.Format(" and {0} in({1})", _Base_TcCommonSelectROR.MCS_ValueField, _Base_TcCommonSelectROR.MCS_SelectSQL); 28 } 29 else 30 { 31 throw new HfSystemPlatException("id:81003,系統缺少已選項數據源配置,請聯繫管理員!"); 32 } 33 } 34 else 35 { 36 //無已選項,清空SQL 37 sqlSelect = ""; 38 } 39 40 //添加排序 41 if (!string.IsNullOrEmpty(_Base_TcCommonSelectROR.MCS_OrderBy)) 42 { 43 sqlSelect += string.Format(" order by {0}", _Base_TcCommonSelectROR.MCS_OrderBy); 44 } 45 46 //URL參數替換 47 sqlSelect = HfSystemFrame.ParamData.HfParamReplace.ReplaceKey(sqlSelect, true, true); 48 if (!string.IsNullOrEmpty(sqlSelect)) 49 { 50 DataSet dsSelect = HfUtilityFrame.DbUtility.DbHelperSQL.Query(sqlSelect); 51 if (dsSelect != null && dsSelect.Tables[0].Rows.Count > 0) 52 { 53 foreach (DataRow item in dsSelect.Tables[0].Rows) 54 { 55 _SelectedData.Add(new ParamData.HfKeyValueItem( 56 Convert.ToString(item[_Base_TcCommonSelectROR.MCS_ValueField]), Convert.ToString(item[_Base_TcCommonSelectROR.MCS_NameField]))); 57 } 58 } 59 } 60 61 return _SelectedData; 62 }
【文章待續】
(歡迎轉載,轉載請註明:HFun.快速開發平臺)