2009-12-07 54 views
0

我在使用多选中获取项目以获取选定项时遇到问题。MultiSelectList问题,正在获取类型

我有这样的:

BookingObject bo = _bs.GetBookingObjects(bookingobjectID.Value).FirstOrDefault(); 
bo.BookingViews.Load(); 

MultiSelectList BookingViewsBookingObjects = new MultiSelectList(_bvs.GetBookingViews(), "BookingViewID", "BookingViewName", (IEnumerable<BookingView>)bo.BookingViews.ToList()); 

BookingViews < - > BookingViewsBookingObjects < - > BookingObjects

它是一种多对多的关系。 _bvs.GetBookingViews()返回的是BookingView的IQueryable,我似乎无法从bo.BookingViews中选择项目。

这里可能缺少什么?我使用了错误的类型吗?

/M

回答

1

也许你需要在最后一个参数“BookingViewID”,而不是IEnumerable<BookingView>作为空穴IEnumerable<object>发送实际选择的值这将是一个IEnumerable<int>如果BookingViewID为int,这样的:

MultiSelectList BookingViewsBookingObjects = new MultiSelectList(_bvs.GetBookingViews(), "BookingViewID", "BookingViewName", (IEnumerable<int>)bo.BookingViews.Select(a=> a.BookingViewID).ToList()); 

编辑:完整的代码。

设置中的数据(控制器/视图模型):

List<KeyValuePair<int, string>> List = new List<KeyValuePair<int,string>>();; 
      List.Add(new KeyValuePair<int, string>(1,"Value1")); 
      List.Add(new KeyValuePair<int, string>(2,"Value2")); 
      List.Add(new KeyValuePair<int, string>(3,"Value3")); 
      List.Add(new KeyValuePair<int, string>(4,"Value4")); 

      List<int> selected = new List<int>{1,2}; 

      ViewData["Multi"] = new MultiSelectList(List.AsEnumerable(), "Key", "Value", selected); 

(查看):

<%= Html.ListBox("MultiSelectList", ViewData["Multi"] as MultiSelectList)%> 

结果:

alt text http://www.diarioplus.com/files/pictures/multiselectlist.JPG

+0

没有工作,同restult,它有count = 1,但该项目没有被选中 – 2009-12-07 21:35:32

+0

更新了帖子,添加了完整例如,希望它可以提供帮助。 – JOBG 2009-12-08 00:58:40