本篇介绍HFun.快速开发平台的另一项系统常用功能:系统数据或参数选择,主要应用在表单录入中信息的选择,如类别,编号等。先贴出本系统实现的页面效果:

如上图所示,系统中将参数的选择统一展现为该方式,开发人员可通过后台的配置添加自己想要实现的数据选择对象,系统中该功能主要实现的功能有:

  1、开发人员或系统运维人员可通过系统配置工具调整数据选项参数,可增、删、改选择对象,实现0编码即可创建数据选择对象,并对配置信息进行有效性验证。

  2、通过系统配置工具可定义待选项数据,也可定义默认的已选项数据。

  3、已选项的数据来源扩展为系统设置默认或由URL传递实现默认选项。

  4、全程的异步数据处理,对系统参数进行有效性的判断。

  5、可对已选项进行前后排序操作。

  6、确定选项后可自定义保存方法,可自定义主、从表的数据保存,也可定义将选项value及name返回,自定义回调方法实现业务功能。

  7、同一配置选项可用于多个客户程序。

系统的配置界面如下:

程序部分代码:

1、客户端的数据请求:

 //初始化数据
function InitData(_isDefaultItem, _isInitSelected) {
var _selID = "";
if (_isDefaultItem == "Y") {
$("#DrpSelect option").each(function () {
_selID += $(this).val() + ",";
});
}
AjaxJson("/Common/CommonSelect/ajax_GetSelectData.ashx",
{
FriendID: $('#P_FriendID').val(),
IsSelectItem: _isDefaultItem,
Param: $('#P_Param').val(),
SelectCode: $('#P_SelectCode').val(),
SelectItem: _selID,
SearchKey: $('#txt_Search').val()
},
function (data) {
if (data._BackState == "1") {//加载成功
//初始化待选项
$("#DrpSupply").empty();
$.each(data._BackData.H_SupplyData, function (i) {
var _item = data._BackData.H_SupplyData[i];
$("#DrpSupply").append("<option value='" + _item.D_Value + "'>" + _item.D_Name + "</option>");
});
//初始化已选项,参数指定加载时才加载,兼容查询模式,查询时不加载已选项
if (_isInitSelected == true) {
$("#DrpSelect").empty();
$.each(data._BackData.H_SelectedData, function (i) {
var _item = data._BackData.H_SelectedData[i];
$("#DrpSelect").append("<option value='" + _item.D_Value + "'>" + _item.D_Name + "</option>");
});
}
} else {//加载失败
ShowError(data._BackMessage);
return;
}
});
};

2、待选项的数据处理:

 /// <summary>
/// 获取已选项
/// </summary>
/// <returns></returns>
public List<ParamData.HfKeyValueItem> GetSelectedData()
{
//已选项
List<ParamData.HfKeyValueItem> _SelectedData = new List<ParamData.HfKeyValueItem>();
string sqlSelect = string.Format("select * from ({0})T where 1=1 ", _Base_TcCommonSelectROR.MCS_SupplySQL);
if (_Base_TcCommonSelectROR.MCS_SelectSource == "Param" || _Criteria.IsSelectItem == "Y")
{//来源于参数,可能为系统设置来源参数,也可能是数据请求时指定使用传递参数
string _selectItem = GetSelectedItems();
if (!string.IsNullOrEmpty(_selectItem))
{
sqlSelect += string.Format(" and {0} in({1})", _Base_TcCommonSelectROR.MCS_ValueField, _selectItem);
}
else
{
//传递参数为空时说明没有选择数据,清空SQL
sqlSelect = "";
}
}
else if (_Base_TcCommonSelectROR.MCS_SelectSource == "SQL")
{//已选项来源于SQL语句
if (!string.IsNullOrEmpty(_Base_TcCommonSelectROR.MCS_SelectSQL))
{
sqlSelect += string.Format(" and {0} in({1})", _Base_TcCommonSelectROR.MCS_ValueField, _Base_TcCommonSelectROR.MCS_SelectSQL);
}
else
{
throw new HfSystemPlatException("id:81003,系统缺少已选项数据源配置,请联系管理员!");
}
}
else
{
//无已选项,清空SQL
sqlSelect = "";
} //添加排序
if (!string.IsNullOrEmpty(_Base_TcCommonSelectROR.MCS_OrderBy))
{
sqlSelect += string.Format(" order by {0}", _Base_TcCommonSelectROR.MCS_OrderBy);
} //URL参数替换
sqlSelect = HfSystemFrame.ParamData.HfParamReplace.ReplaceKey(sqlSelect, true, true);
if (!string.IsNullOrEmpty(sqlSelect))
{
DataSet dsSelect = HfUtilityFrame.DbUtility.DbHelperSQL.Query(sqlSelect);
if (dsSelect != null && dsSelect.Tables[].Rows.Count > )
{
foreach (DataRow item in dsSelect.Tables[].Rows)
{
_SelectedData.Add(new ParamData.HfKeyValueItem(
Convert.ToString(item[_Base_TcCommonSelectROR.MCS_ValueField]), Convert.ToString(item[_Base_TcCommonSelectROR.MCS_NameField])));
}
}
} return _SelectedData;
}

【文章待续】

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

HFun.快速开发平台(五)=》自定义系统数据选择的更多相关文章

  1. HFun.快速开发平台(二)=》自定义列表实例(请求参数的处理)

    上编描述了自定义列表的基本实现功能,本此记录列表的请求过程. 个人比较喜欢对参数进行对象化,方便后续人维护及查看,先上代码: /************************************ ...

  2. HFun.快速开发平台(四)=》自定义列表实例(请求参数的处理)

    上编自定义列表描述了自定义列表的基本实现功能,本此记录列表的请求过程. 个人比较喜欢对参数进行对象化,方便后续人维护及查看,先上代码: /******************************* ...

  3. HFun.快速开发平台(三)=》通用系统用户选择

    系统中用户的选择使用特别多,将该功能统一实现可提升系统效率. 用户的选择实现相对简单,系统中基本都会提供,HFun.快速开发平台中的实现特点主要有: 1.用户的选择分为单用户选择和多用户选择. 2.用 ...

  4. HFun.快速开发平台(二)=》自定义列表实例

    应用系统中数据列表的展现是开发内容之一,实现的方式基本是通过编号具体的访问列表页实现,通过检索条件进行数据源的获取,列字段的描述,还可能会有检索条件的实现,列表数据的导出等功能. 为了将重复工作进行简 ...

  5. HFun.快速开发平台(一)=》简述

    [——使用成熟的技术实现了解的业务,关注面向对象,关注业务领域] 偶然的机会又回到了园子,看到上次的文章已是N年前,洽巧近期正在开发一个小程序,标题定为“快速开发平台”有点夸张,算是给自己定个小目标. ...

  6. 如何提高码农产量,基于java的web快速开发平台之自定义表单开发随笔

    老板 :下班前一定写完? 程序猿:可以,下班前能一定给! 第二天早上上班~~~ 老板:这都第二天了,怎么没写完? 程序猿:我还没有下班呢! 哎!程序猿的痛啊 公司上线的项目有不少销售记录表,又是报价单 ...

  7. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 数据权限增强、范围权限增强

    并不是不想做B\S的管理工具,只是精力实在不够,由于用户权限管理组件是基础组件.所以C\S的也无妨,不会有几个人在乎Oracle,SQLServer是否不b\s的,注重的是功能性能,请大家不要纠结与是 ...

  8. jeesite快速开发平台(五)----用户-角色-部门-区域-菜单-权限表关系

    转自: https://blog.csdn.net/u011781521/article/details/78994904

  9. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 树形选择项目的标准例子

    用成套的现成的方法引导大家开发程序,整个团队的开发效率会很高.例如我们现在有30多个开发人员,若有300个开发人员,这开发工作很容易乱套,我们需要有效的管理维护所有团队的开发工作.把数据结构.通用的组 ...

随机推荐

  1. jenkins 启动被杀死

    1.重设环境变量build_id 在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程 2.在启动jenkins 的时候禁止 ...

  2. 2018年-2019年第二学期第六周C#学习个人总结

    在这一周,我学习了5.4抽象类和接口.首先,抽象类当中我知道了C#允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰例如:abstract void ...

  3. 动态修改JS对象的值及React setState

    一.在JS里使用(非ES6) 实现场景: 给一个空对象填充某一指定数组内的值 并随机生成数量 const fruit = ['apple', 'banana', 'orange'] let fruit ...

  4. [python]Python代码安全分析工具(Bandit)

    简介: Bandit是一款Python源码分析框架,可用于Python代码的安全性分析.Bandit使用标准库中的ast模块,将Python源码解析成Python语法节点构成的树.Bandit允许用户 ...

  5. vue admin mock数据

    搭建脚手架axios访问不到接口:mock数据的问题mock下的index.js设置了默认指向

  6. es6 Promise简单介绍

    promise的基本用法 promise执行多步操作非常好用,那我们就来模仿一个多步操作的过程,那就以吃饭为例吧.要想在家吃顿饭,是要经过三个步骤的. 洗菜做饭. 坐下来吃饭. 收拾桌子洗碗. 这个过 ...

  7. iOS权限申请

    <!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问 ...

  8. 【Idea】IntelliJ不停地updating indices的解决办法

  9. ElasticSearch改造研报查询实践

    背景: 1,系统简介:通过人工解读研报然后获取并录入研报分类及摘要等信息,系统通过摘要等信息来获得该研报的URI 2,现有实现:老系统使用MSSQL存储摘要等信息,并将不同的关键字分解为不同字段来提供 ...

  10. Web的Flex弹性盒模型

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...