1、MultiSelectList多选问题。

在控制器中生成MultiSelectList,如:

var m = container.FlowNode.Where(f => f.FlowNode_ID == ID).FirstOrDefault();
List<FormDataItemMapping> listFDIM =m.FlowTable.FormTemplate.FormDataItemMapping.ToList();
ViewBag.userTablesSL=new MultiSelectList(listFDIM, "FormDataItemMapping_ID", "FormDataItemMapping_Title", m.FormDataItemMapping.ToList());

 在前台进行绑定,如:

@Html.ListBox("usertable2222", (MultiSelectList)ViewBag.userTablesSL)     

 前台无法进行多选,查了很多资料都没有查看原因。最后只得自己封装方法生成IEnumerable<SelectListItem>对象,在前台绑定。

@Html.ListBox("usertable2222", (IEnumerable<SelectListItem>)ViewBag.userTablesSL)     

 2、MultiSelectList多选int型会出现无法多选的情况。

后台:
var a1 = new List<int>(); a1.Add(1); a1.Add(2); a1.Add(3); ViewBag.a1 = a1; var a2 = new List<int>(); a2.Add(2); a2.Add(3); ViewBag.a2 = a2; ViewBag.ssss= new MultiSelectList(a1,a1);

前台:
 @Html.ListBox("xxx", (MultiSelectList)(ViewBag.ssss))
   此种情况,无select未多选,若上面的a1是string类型,则就没有问题
   @Html.ListBox("aaa", new MultiSelectList((List<SelectListItem>)ViewBag.s1, (List<string>)ViewBag.s1))

 3、前台HtmlHepler标签与后台的ViewBag或ViewData的名称、实体名有重复的,很可能出现select无法多选的问题。

后台:
List<UserTable> usertablessss1 = (from ao in container.UserTable select ao).ToList();
 ViewBag.usertablessss = GenerateMutiSelectList(usertablessss1, "UserTable_ID", "UserTable_Name", m.UserTable.ToList());
ViewData["usertablessss2"] = GenerateMutiSelectList(usertablessss1, "UserTable_ID", "UserTable_Name", m.UserTable.ToList());
前台:    @Html.ListBox("usertablessss4", (IEnumerable<SelectListItem>)ViewBag.usertablessss)      
  @Html.ListBox("usertablessss3", (IEnumerable<SelectListItem>)ViewData["usertablessss2"]
@Html.ListBox("usertablessss1", (IEnumerable<SelectListItem>)ViewData["usertablessss2"])  
@Html.ListBox("usertablessss2", (IEnumerable<SelectListItem>)ViewData["usertablessss2"]) 此种情况下就会出现无法多选的情况。

 

 

posted on 2014-02-17 19:34  zhang1597116  阅读(220)  评论(0)    收藏  举报