两个不相联的表合成一个下拉框

人走茶凉 提交于 2019-11-26 20:01:14

如下图的下拉框所示,这个下拉框是由两个表组成的,后面两个(购)的值和上面的是完全出自不同的表,再者它们没有直接的关联,只是两个表各有一个主键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的值就让它为空。

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!