Advertisement
Guest User

Untitled

a guest
Sep 19th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. ViewData["TARGET_DATE"] = new SelectList((from n in _db.ACTION_PLANs select n).ToList(), "TARGET_DATE", "TARGET_DATE");
  2.  
  3. <td><%=Html.DropDownList("TARGET_DATE", "All")%></td>
  4.  
  5. @Html.DropDownFor(
  6. o => o.SomeProperty,
  7. new FormattableSelectList(ViewBag.MyItems, "ID", "Time", "{0:f}"),
  8. "Choose a Time"
  9. )
  10.  
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Web;
  15. using System.Web.Mvc;
  16. using System.Collections;
  17. using System.Web.UI;
  18. using System.Globalization;
  19.  
  20. public class FormattableSelectList : SelectList
  21. {
  22. private string _FormatString;
  23.  
  24. public FormattableSelectList(IEnumerable items, string dataValueField, string dataTextField, string formatString)
  25. : base(items, dataValueField, dataTextField)
  26. {
  27. _FormatString = formatString;
  28. }
  29.  
  30. public FormattableSelectList(IEnumerable items, string dataValueField, string dataTextField, string formatString, object selectedValue)
  31. : base(items, dataValueField, dataTextField, selectedValue)
  32. {
  33. _FormatString = formatString;
  34. }
  35.  
  36. public override IEnumerator<SelectListItem> GetEnumerator()
  37. {
  38. return ((!String.IsNullOrEmpty(DataValueField)) ?
  39. GetListItemsWithValueField() :
  40. GetListItemsWithoutValueField()).GetEnumerator();
  41. }
  42.  
  43. private IList<SelectListItem> GetListItemsWithValueField()
  44. {
  45. HashSet<string> selectedValues = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
  46. if (SelectedValues != null)
  47. {
  48. selectedValues.UnionWith(from object value in SelectedValues select Convert.ToString(value, CultureInfo.CurrentCulture));
  49. }
  50.  
  51. var listItems = from object item in Items
  52. let value = Eval(item, DataValueField, null)
  53. select new SelectListItem
  54. {
  55. Value = value,
  56. Text = Eval(item, DataTextField, _FormatString),
  57. Selected = selectedValues.Contains(value)
  58. };
  59. return listItems.ToList();
  60. }
  61.  
  62. private IList<SelectListItem> GetListItemsWithoutValueField()
  63. {
  64. HashSet<object> selectedValues = new HashSet<object>();
  65. if (SelectedValues != null)
  66. {
  67. selectedValues.UnionWith(SelectedValues.Cast<object>());
  68. }
  69.  
  70. var listItems = from object item in Items
  71. select new SelectListItem
  72. {
  73. Text = Eval(item, DataTextField, _FormatString),
  74. Selected = selectedValues.Contains(item)
  75. };
  76. return listItems.ToList();
  77. }
  78.  
  79. private static string Eval(object container, string expression, string formatString)
  80. {
  81. object value = container;
  82. if (!String.IsNullOrEmpty(expression))
  83. {
  84. value = DataBinder.Eval(container, expression);
  85. }
  86. string stringValue;
  87. if (formatString == null)
  88. {
  89. stringValue = Convert.ToString(value, CultureInfo.CurrentCulture);
  90. }
  91. else
  92. {
  93. stringValue = String.Format(formatString, value);
  94. }
  95.  
  96. return stringValue;
  97. }
  98.  
  99. }
  100.  
  101. [Display(Name = "Time (From):")]
  102. public int FromTimeId { get; set; }
  103.  
  104. [Display(Name = "Time (To):")]
  105. public int ToTimeId { get; set; }
  106.  
  107. public virtual FromTime FromTime { get; set; }
  108. public virtual ToTime ToTime { get; set; }
  109.  
  110. public ActionResult Create()
  111. {
  112. ViewBag.FromTimes = db.FromTimes;
  113. ViewBag.ToTimes = db.ToTimes;
  114. }
  115.  
  116. <div class="editor-field">
  117. @Html.DropDownListFor(model => model.FromTimeId, new Namespace.FormattableSelectList(ViewBag.FromTimes, "FromTimeId", "FromTimeName", "{0:h:mm tt}"))<br />
  118. @Html.ValidationMessageFor(model => model.FromTimeId)
  119. </div>
  120. </td>
  121. <td>
  122. <div class="editor-label">
  123. @Html.LabelFor(model => model.ToTimeId, "To Time:")
  124. </div>
  125. <div class="editor-field">
  126. @Html.DropDownListFor(model => model.ToTimeId, new Namespace.FormattableSelectList(ViewBag.ToTimes, "ToTimeId", "ToTimeName", "{0:h:mm tt}"))<br />
  127. @Html.ValidationMessageFor(model => model.ToTimeId)
  128. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement