2016-07-15 70 views
0

未来的值填充下拉列表我的issuedate这些日期的下拉在我的下拉通过在HTTP上应用一些过滤器获得方法从另一个下拉

ViewBag.PMID1 = new SelectList(db.PRIMKT_MAST.Where(z => z.PRODUCT_ID == j && z.REC_VERIFIED == 0 && z.VERIFY_LOCK == 0 && z.TRTYPE == i), "PMID", "ISSUE_DATE"); 

这是我的下拉列表填充。

@ Html.LabelFor(型号=> model.ISSUE_DATE,新的{@class = “控制标签COL-MD-2”}) @ Html.DropDownList( “PMID1”,NULL,新的{@onchange = “FillTenor()”}) @ Html.ValidationMessageFor(型号=> model.ISSUE_DATE)

现在我想在此下拉列表是在发行日的基础上填充像select auctionid where issuedate = dropdown selected value

一个表来选择 AUCTIONID

当我们得到auctionid我想采取此auctionid和在其他表中搜索并填写像 select Tenors(i want to select this value) where auctionid is (whatever we get from dropdown) 这个auctionid的基础另一个下拉这就是我要填写

 <div class="form-group"> 
      @Html.LabelFor(model => model.TENOR_ID, "TENOR_ID", new { @class  = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(m => m.TENOR_ID, 
new SelectList(Enumerable.Empty<SelectListItem>(), "AUCDT_ID", "TENOR_ID"), 
       "Select Tenors", 
       new { @class = "form-control" }) 
       @Html.ValidationMessageFor(model => model.BRANCH_ID) 
      </div> 
     </div> 

This is my Controller 
    public ActionResult Create() 
     { 
      ViewBag.AUCTION_ID = new SelectList(db.AUCTION_DATA, "AUCTION_ID", "PRODUCT_ID"); 
      ViewBag.CUSTOMER_ID = new SelectList(db.CUSTOMERs, "CUSTOMER_ID", "CUSTOMER_NAME"); 
      ViewBag.PMID = new SelectList(db.PRIMKT_MAST, "PMID", "PRODUCT_ID"); 
      ViewBag.BRANCH_ID = new SelectList(db.BRANCHes, "BRANCH_ID", "BRANCH_DESC"); 
      //ViewData["ListofIssueDate"] = db.PRIMKT_MAST.Where(z => z.PRODUCT_ID == Session["Product_Id"] && z.REC_VERIFIED == 0 && z.VERIFY_LOCK == 0 && z.TRTYPE == Convert.ToInt32(Session["Trtype"])).Select(z => z.ISSUE_DATE); 
      int i = Convert.ToInt32(Session["Trtype"]); 
      string j =Convert.ToString(Session["Product_Id"]); 
      ViewBag.PMID1 = new SelectList(db.PRIMKT_MAST.Where(z => z.PRODUCT_ID == j && z.REC_VERIFIED == 0 && z.VERIFY_LOCK == 0 && z.TRTYPE == i), "ISSUE_DATE", "ISSUE_DATE"); 
      return View(); 
     } 

我的AJAX调用我的第二Dropdownt名单..

@section script { 
    <script> 
     function FillTenor() { 
      var IssueDate = $('#PMID1').val(); 
      $.ajax({ 
       url: '@Url.Action("FillCity", "PrimaryMarket")', 
       type: "GET", 
       dataType: "JSON", 
       data: { IssueDate: $("#PMID1").val() }, 
       success: function (Tenor) { 
        $("#TENOR_ID").html(""); // clear before appending new list 
        $.each(Tenor, function (i, AUCDATA_TENORS) { 
         $("#TENOR_ID").append(
          $('<option></option>').val(AUCDATA_TENORS.AUCDT_ID).html(AUCDATA_TENORS.TENOR_ID)); 
        }); 
       } 
      }); 
     } 
    </script> 
} 


My onchange Method 
[HttpGet] 
     public ActionResult FillTenor(DateTime? IssueDate) 
     { 
      var auctionid = db.PRIMKT_MAST.Where(c => c.ISSUE_DATE == IssueDate).Select(c=>c.AUCTION_ID).ToList(); 
      var Tenor = db.AUCDATA_TENORS.Where(c => c.AUCTION_ID ==(auctionid[0])).Select(c => c.TENOR_ID); 

      return Json(Tenor, JsonRequestBehavior.AllowGet); 
     } 

Exception

+0

搜索MVC级联下拉列表(请参阅[本DotNetFiddle(https://dotnetfiddle.net/1bPZym)的例子) –

+0

使用JavaScript级联下拉列表中,捕捉'PMID1'的值并使ajax调用来加载第二个下拉列表的值。 –

+0

我已经做了一个ajax调用,我的函数正在处理下拉事件的变化'public ActionResult FillTenor(DateTime?IssueDate) { var auctionid = db.PRIMKT_MAST.Where(c => c.ISSUE_DATE == IssueDate).Select C => c.AUCTION_ID).ToList(); var Tenor = db.AUCDATA_TENORS.Where(c => c.AUCTION_ID ==(auctionid [0]))。Select(c => c.TENOR_ID); return Json(Tenor,JsonRequestBehavior.AllowGet); }'但它给了我例外@TetsuyaYamamoto –

回答

0

在第一一目了然,LINQ to Entities does not recognize the methodget_Item(Int32)意味着您在lambda表达式内部有一定的数组值赋值,可能返回null或空值,因此无法将其转换为适当的SQL语句来填充级联下拉列表。

我怀疑这种表达产生的例外:

var Tenor = db.AUCDATA_TENORS.Where(c => c.AUCTION_ID ==(auctionid[0])).Select(c => c.TENOR_ID); 

建议lambda表达式:

// common practice handling array value(s) into lambda: 
// use a variable outside lambda to hold array value(s), 
// then pass that variable inside the lambda 
var auctionId = auctionid[0]; // this may improved to check against null or empty value 
var Tenor = db.AUCDATA_TENORS.Where(c => c.AUCTION_ID == auctionId).Select(c => c.TENOR_ID); 

NB:此行为也适用于阵列由包含属性的类。

欢迎任何改进和建议。

参考:LINQ to Entities does not recognize the method ... get_Item(Int32)

+0

Thankx男人你是一个救生员:D –

相关问题