2016-07-15 72 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 –

相關問題