如下图的下拉框所示,这个下拉框是由两个表组成的,后面两个(购)的值和上面的是完全出自不同的表,再者它们没有直接的关联,只是两个表各有一个主键ID放在主表里面。
一、 组合
1、 那么先从控制器共同查询出两个表的值,注意这里一定要用List接收,再把两个表查出来的值都给到同一个字段,后面再用AddRange的方法把两个表连接起来
public ActionResult ClassicsBox()
{
List<Select> liser = (from tbUser in myModel.PW_User
select new Select
{
id =tbUser.UserID,
text =tbUser.Name,
}).ToList();
List<Select> Trade = (from tbLead in myModel.SYS_LeadShopping
select new Select
{
id =tbLead.LeadShoppingID,
text =tbLead.LeadShopping+"("+"购"+")",
}).ToList();
liser.AddRange(Trade);//组合
return Json(liser, JsonRequestBehavior.AllowGet);
}
三、JS
1、视图绑定下拉框用下面封装好的方法,value这里正常的是绑定id的现在需要的是绑定名称在上面,因为id在两个表中可能是有重复的,名称的话在新增的时候限制一下就行。
function createSelec(selectId, url, value) {
$.post(url, function (jsonData) {
if (selectId.indexOf('#') != 0) {
selectId = '#' + selectId;
}
$(selectId).empty();//清空该元素
//创建option
for (k in jsonData) {
$(selectId).append('<option value="' + jsonData[k].text + '">' + jsonData[k].text
+ '</option>');
}
//设置选中值
if (value != undefined && value != null && value !=
'') {
$(selectId).val(value);
}
});
}
四、保存
1、 把选中的名称传过来后,正则匹配去掉后面的(购),再用这个名称到数据库的两个表查询,查询出有值的说明它是属于这个表的。接着就进去查询出这个表的id,就把查询出的id保存到主表,另一个就是id的值就让它为空。
来源:https://blog.csdn.net/weixin_44484452/article/details/99078749