2013-05-01 107 views
1

我嘗試了各種方法來使其工作。我想也許我在模型或控制器中缺少一些東西,所以我發佈了所有三個部分。在多選列表框中顯示選中的項目

我有一個數據庫中的數據顯示顧問在上次約會中選擇的一些建議主題。當顧問調用該預約時,應用程序應顯示所有可能主題的列表,並將之前選擇的主題突出顯示。除了最後一點之外,一切都有效

我知道我正在檢索正確的信息,因爲我可以單獨顯示所選項目。我只是不能讓他們出現選擇。這是代碼。我正在剪掉不相關的部分。

public class AppointmentModel 
{ ... 
    public string AdvisingTopicId { get; set; } 
    public List<SelectListItem> AdvisingIdList { get; set; } 
    public SelectList AdvisingTopicNames { get; set; } 
} 

public class HomeController : AdvisorBaseController 
{ ... 
     var topicCodes = appointment.advising_topic.ToList(); 

     var advisingTopics = new SelectList((from t in topicCodes 
           select t.name).ToList(), "name"); 

     var topicsList = (from t in db.advising_topic 
          select new SelectListItem 
          { 
           Selected = false, 
           Text = t.name, 
           Value = SqlFunctions.StringConvert((double)t.advising_topic_id).Trim() 
          }).ToList(); 

     foreach (var topicCode in topicCodes) 
     { 
      var selTopic = topicsList.Find(x => x.Value == topicCode.advising_topic_id.ToString()); 
      if (selTopic != null) 
      { 
       selTopic.Selected = true; 
      } 
     } ... 
      var appointmentModel = new AppointmentModel 
      { ... 
       AdvisingTopicNames = advisingTopics, 
       AdvisingIdList = topicsList, 
      }; 

然後視圖

@model AcademicAdvising.Models.AppointmentModel 
<h3>Advising Topics</h3> 
<ul> 
    @foreach (var item in Model.AdvisingTopicNames) 
    { 
     <li>@Html.DisplayFor(x => item)</li> 
    } 
</ul> 
    @Html.ListBoxFor(m=>m.AdvisingIdList, new SelectList(Model.AdvisingTopicNames, "Value", "Text", Model.AdvisingTopicNames.SelectedValue)) 

注意,在foreach正確顯示所選項目。這只是爲了測試,將被取消。 ListBoxFor是我掙扎的地方。我這裏有什麼不起作用(顯示沒有突出顯示的完整列表)。這就是我嘗試過各種方法的地方,都失敗了。

+0

布萊恩·羅伯茨的建議,作品的內容。即 @ Html.ListBox(「myLB」,Model.AdvisingIdList) 返回突出顯示的列表。所以我打算將它標記爲已回答,然後離開並嘗試弄清楚它爲什麼不能與ListBox一起工作。 – user2283231 2013-05-02 20:19:18

+0

有時會出現命名問題。看看你正在定義的名字,並確保你沒有重複使用它們。請注意查詢字符串參數和放入視圖包中的項目。 – 2013-05-03 15:41:37

回答

1

看起來你可能已經意識到了太深。你已經有了一個選擇列表,這是功能需要的所有列表框。

@Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingTopicNames) 

但說實話看你如何定義你的列表我覺得你真的想可能是

@Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingIdList) 
+0

這些都沒有工作。前者僅導致選定的主題顯示(沒有突出顯示)。後者導致顯示所有主題,但沒有突出顯示。儘管感謝您的快速回復。 – user2283231 2013-05-01 20:32:03

+0

這聽起來像是一個數據問題。第二個是顯示完整列表,但是發生了什麼似乎你沒有設置任何'選擇'檢查出你的代碼行如果(selTopic!= null) { selTopic.Selected = true; }並確保如果實際上正在被擊中,並且某事正在觸發所選標誌爲真。 – 2013-05-01 20:36:25

+0

我以爲我檢查過,但我會再看一次,因爲你的想法和我的很像 - 它只是感覺像數據問題而不是演示問題。如果我能解決這個問題,我會回來標記解決方案。 – user2283231 2013-05-01 20:48:03

相關問題