2014-10-01 114 views
0

我有一個名爲Service的表,其中有一個名爲TSBNumber的列。我試圖在視圖中以多選形式顯示值。我對DataText和Data Value Field感到困惑,因爲這是一個單獨的字段本身,datatext和value字段是相同的。將單列綁定到多選列表

var tsbNumbersList = (from se in db.ServiceEntry 
            join r in db.System1 on se.SystemID equals r.ID 
            where se.Active == true && r.PlatformID == 1 && se.TSBNumber != null 
            select se.TSBNumber).ToList().Distinct() 

如果我只是在傳遞集合,如果我這樣做,然後在視圖下拉我看到System.SelecListItem

<div class="bodyContent"> 
      <span class="leftContent"><a id="qTipServiceTsbExportTsbSelection" href=''> 
       @Html.Label("TSB Number")</a> </span><span class="rightContent"> 
        @Html.ListBoxFor(model => model.SelectedTsbs, new MultiSelectList(ViewBag.TsbNumber, Model.SelectedTsbs), 
        new { id = "Tsblstbox", name = "listbox", @class = "chosen-select", multiple = "multiple", data_placeholder = "Click here to Select Tsb Number...", style = "width:90%;", tabindex = "4" } 
        ) 
       </span> 
     </div> 
+0

你的意思是你想要顯示和賦值'TSBNumber'到屬性'SelectedTsbs'? – 2014-10-01 21:54:53

+0

查詢返回字段,我想這將顯示在多選下拉列表中。當用戶從這個下拉列表中選擇數值時,索引存儲在一個數組中,該數組就是selectedPTsbs。當用戶點擊此視圖上的按鈕時,控制器操作會收到選定的ptsIds – user721 2014-10-01 23:00:02

+0

但是,「TSBNumber」的值與您在「SelectedTsbs」數組中存儲的值相同(或者「ServiceEntry」包含ID屬性想要存儲在'SelectedTsbs'中 – 2014-10-01 23:03:00

回答

0

更改查詢刪除select條款

var tsbNumbersList = (from se in db.ServiceEntry 
    join r in db.System1 on se.SystemID equals r.ID 
    where se.Active == true && r.PlatformID == 1 && se.TSBNumber != null 
    select se).Distinct(); 

並基於集合創建SelectList

ViewBag.TsbNumber = new SelectList(tsbNumbersList, "TSBNumber", "TSBNumber"); 

並在視圖

@Html.ListBoxFor(model => model.SelectedTsbs, (SelectList)ViewBag.TsbNumber) 

如果string[] SelectedTsbs的值是[ 「121」, 「q231」],則第一和第三選項將被選中。

+0

查詢必須有一個select子句,它會拋出一個錯誤。 – user721 2014-10-01 23:47:08

+0

糟糕 - 混淆了查詢語法和擴展方法的語法 - 參見update – 2014-10-01 23:56:27