本篇介绍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.快速开发平台)