功能:
根据用户在氚云页面填写关联表单多选的数据,自动填充同表内人员多选控件。
前端代码
// 加载事件
OnLoad:function(){
var tab = this;
//绑定 关联表单多选控件 F0000001
this.F0000001.BindChange( "Options", function() {
$.SmartForm.PostForm( "ajaxPost", {F0000001:tab.F0000001.GetValue().join(',')}, function(res) {
if( res.Successful == true ) {
// 获取前端返回的数组
var result = res.ReturnData;
//赋值给要填充的人员多选控件F0000002
tab.F0000002.SetValue(result["result_obj"]);
}
},
function( err ) {
$.IShowError( "错误" + err );
}, false);
});
},
后端代码
if(actionName == "ajaxPost")
{
//创建一个人员objectid的集合
List < object > Options_obj = new List<object>();
//获取前端控件F0000001的值
string Options = this.Request["F0000001"] + string.Empty;
//分割Opnions的值,加入数组
string[] Opnion_objectids = Options.Split(',');
// 将数组中的每个字符串作为键存储在字典中,并指定一个相应的值
foreach(string Option_objectid in Opnion_objectids)
{
//通过前端传回来的关联表单objectid,加载出业务对象
H3.DataModel.BizObject biz = H3.DataModel.BizObject.
Load(this.Request.UserContext.UserId, this.Engine, "关联表单编码", Option_objectid, false);
//得到业务对象的id
string o_id = biz.ObjectId;
//手写sql语句 F0000004是人员控件
string sql = "SELECT F0000004 FROM i_表单编码 where objectid = '" + o_id + "' ";
//执行sql语句,返回结果是个DataTable 对象
System.Data.DataTable dt = this.Request.Engine.Query.QueryTable(sql, null);
if(dt != null && dt.Rows != null && dt.Rows.Count > 0)
{
foreach(System.Data.DataRow row in dt.Rows)
{
//取值加入集合
object f4_obj = row_name_day["F0000004"];
Options_obj.Add(f4_obj);
}
}
}
// 使用 Dictionary来存储不重复的元素
Dictionary < object, bool > uniqueobjDict = new Dictionary<object, bool>();
// 遍历列表,将不重复的元素添加到 Dictionary 中
foreach(string obj in Options_obj)
{
if(!uniqueobjDict.ContainsKey(obj))
{
uniqueobjDict[obj] = true;
}
}
// 提取不重复的元素
List <object> uniqueobjList = new List<object>(uniqueobjDict.Keys);
//转换成数组
string[] result_obj = uniqueobjList.ConvertAll(obj => obj.ToString()).ToArray();
response.Message = "查询人员";
response.ReturnData = new Dictionary<string, object>();
//在返回结果中加入人员数组
response.ReturnData.Add("result_obj", result_obj);
}