一、 回填时的控制器,根据主表的id查询时,查这两个表一定要用左连接的方式联表,因为两个字段的值是有空值的,下面的字段就相应地查出下拉框的两个id和名称就行,当然想要区分两个值的也可以在后面拼接上标识。
AmendIndent RevampIndentde = (from tbSellI in myModel.PW_Sell
join tbUse in myModel.PW_User on tbSellI.UserID equals tbUse.UserID into dd from tbUse in dd.DefaultIfEmpty()
join LeadS in
myModel.SYS_LeadShopping on tbSellI.LeadShoppingID equals LeadS.LeadShoppingID into dde from LeadS in dde.DefaultIfEmpty()
where tbSellI.SellID ==
sellID
select new AmendIndent
{
UserID = tbSellI.UserID,//用户
Name =tbUse.Name,
LeadShoppingID =LeadS.LeadShoppingID,
LeadShopping =LeadS.LeadShopping + "(" + "购" + ")",
}).Single();
return Json(RevampIndentde, JsonRequestBehavior.AllowGet);
二、回填
1、 首先通过正常的方式绑定下拉框,这里的下拉框一定要在回填之前就绑定了,不然会影响到下拉框无法正常操作的。
2、 因为下拉框的标签都是的字元素嘛,所以通过获取它的数量来判断循环的次数,
<span class="levelSelect mr10" id="levelSelect-user">
<select id="UserID" name="Userent" class="form-control "></select>
</span>
3、 然后先判断用户表的id有没有值,有值就说明是用户这个表的也就需要回填用户里的名称,反之同理,接着判断下拉框选项的名称和数据库查出来的名称是否相同,相同就给相应的项添加个selected属性
$(function () {
//绑定下拉框
createSelec("UserID", "/MarketIndentment/Market/ClassicsBox");
//回填
$.getJSON("/MarketIndentment/MarketOne/RevampIndentsellID", { sellID: sellID
}, function (data) {
$("#FormOrderID").resetForm();
Arrears =data.ArrearsReceivable;
//经手人下拉框
var numbers = $("#UserID").find("option");
if (data.UserID != null) {
for (var i = 0; i < numbers.length; i++) {
if
($(numbers[i]).text() == data.Name) {
$(numbers[i]).attr("selected", "selected");
}
}
} else {
for (var j = 1; j < numbers.length; j++) {
if
($(numbers[j]).text() == data.LeadShopping) {
$(numbers[j]).attr("selected", "selected");
}
}
}
});
});