HFun.快速开发平台(五)=》自定义系统数据选择

本篇介绍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         };
View Code

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         }
View Code

 

【文章待续】

(欢迎转载,转载请注明:HFun.快速开发平台)

posted @ 2017-03-01 23:47  屈鲁奇  阅读(873)  评论(0编辑  收藏  举报