从图中可以看到因为绑定的四个下拉框都属于ID
1、 所以都要有数据才可以查询的到数据。而刚好有个区域是不需要的话,那么就得通过左查询来查询绑定的数据
//联表查询
List<PathVo> listPath = (from tbPath in myModel.PW_Path
join tbCabinetAddress in myModel.PW_CabinetAddress on tbPath.TGArea equals tbCabinetAddress.CabinetAddressID into CabinetAddress
join tbCabinetAddress1 in myModel.PW_CabinetAddress on tbPath.HGArea equals tbCabinetAddress1.CabinetAddressID into CabinetAddress1
join tbCabinetAddress2 in myModel.PW_CabinetAddress on tbPath.ZXArea equals tbCabinetAddress2.CabinetAddressID into CabinetAddress2
join tbCabinetAddress3 in myModel.PW_CabinetAddress on tbPath.BGArea equals tbCabinetAddress3.CabinetAddressID into CabinetAddress3
orderby tbPath.PathID
select new PathVo
{
ReturnJourney = tbPath.ReturnJourney,
TGArea1 = CabinetAddress.Select(y => y.Short).FirstOrDefault(),//左查询
HGArea1 = CabinetAddress1.Select(y => y.Short).FirstOrDefault(),
ZXArea1 = CabinetAddress2.Select(y => y.Short).FirstOrDefault(),
BGArea1 = CabinetAddress3.Select(y => y.Short).FirstOrDefault()
}).ToList();
3、因为四个区域都属于ID ,所以在新增的时候还要转换成字符串的形式,这样的话我们可以看得到:路线描述跟那四个区域那里是文字,而不是数字
转换之后就可以直接拼接数据了,利用在数据库那里拼接,然后在页面查询的时候回填数据。
(1、)新增代码:让它以标记那部分的形式拼接
//查询数据
var TGArea = (from tbCabinetAddress in myModel.PW_CabinetAddress
where tbCabinetAddress.CabinetAddressID == pwPath.TGArea
select tbCabinetAddress.Short).Single();
var HGArea = (from tbCabinetAddress in myModel.PW_CabinetAddress
where tbCabinetAddress.CabinetAddressID == pwPath.HGArea
select tbCabinetAddress.Short).Single();
var ZXArea = (from tbCabinetAddress in myModel.PW_CabinetAddress
where tbCabinetAddress.CabinetAddressID == pwPath.ZXArea
select tbCabinetAddress.Short).Single();
pwPath.PathDescribe = TGArea + "—" + HGArea + "—" + ZXArea;
(2、)新增图片:
这里可以看到,报关区域这个下拉框没有选择到数据,而路线描述这个框有个阴影效果,这个是禁止输入数据。让这三个值拼接赋给路线描述这个框
4、新增完刷新表格之后点击修改就看到这样的效果:
总结:
第一、 字段为ID的数据在数据库为null不能查询出数据,所以就用左查询的方法使得字段为空也可以查出数据;
第二、 让需要拼接的数据在数据库里拼接,然后传到浏览器;
第三、 写新增的代码时还要将ID的字段查询转换一下成为字符串的字段,这样可以看到的是名称而不是数字