DateTimePickerComponent.razor 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. @inherits DataFilterBaseComponent<DateTimePickerControl>
  2. @using System.Windows.Forms
  3. <div class="datetimepicker" name="@Control.Name" style="@GetDateTimePickerDivStyle">
  4. @switch (Control.Format)
  5. {
  6. case DateTimePickerFormat.Short:
  7. <input style="@GetDateTimePickerStyle"
  8. type="date"
  9. @bind="DateValue"
  10. disabled="@IsDisabled"
  11. required />
  12. break;
  13. case DateTimePickerFormat.Time:
  14. <input style="@GetDateTimePickerStyle min-width:5rem;"
  15. type="time"
  16. @bind="TimeValue"
  17. step="1"
  18. disabled="@IsDisabled"
  19. required />
  20. break;
  21. default:
  22. <input style="@GetDateTimePickerStyle border-right-width: 0px; padding-right:0px"
  23. type="date"
  24. @bind="DateValue"
  25. disabled="@IsDisabled"
  26. required />
  27. <input style="@GetDateTimePickerStyle border-left-width: 0px; padding-left:0px; min-width:5rem;"
  28. type="time"
  29. @bind="TimeValue"
  30. step="1"
  31. disabled="@IsDisabled"
  32. required />
  33. break;
  34. }
  35. </div>
  36. @code {
  37. private DateTime DateValue
  38. {
  39. get
  40. {
  41. return Control.Value;
  42. }
  43. set
  44. {
  45. DateTime oldValue = Control.Value;
  46. DateTime newDateTime = new DateTime(
  47. value.Year,
  48. value.Month,
  49. value.Day,
  50. oldValue.Hour,
  51. oldValue.Minute,
  52. oldValue.Second,
  53. oldValue.Kind);
  54. Control.Value = newDateTime;
  55. DateTimePickerChange();
  56. }
  57. }
  58. private DateTime TimeValue
  59. {
  60. get
  61. {
  62. return Control.Value;
  63. }
  64. set
  65. {
  66. DateTime oldValue = Control.Value;
  67. DateTime newDateTime = new DateTime(
  68. oldValue.Year,
  69. oldValue.Month,
  70. oldValue.Day,
  71. value.Hour,
  72. value.Minute,
  73. value.Second,
  74. oldValue.Kind);
  75. Control.Value = newDateTime;
  76. DateTimePickerChange();
  77. }
  78. }
  79. private void DateTimePickerChange()
  80. {
  81. Control.OnValueChanged(null);
  82. Refresh();
  83. }
  84. private string GetDateTimePickerDivStyle
  85. => $"{GetControlPosition()} display:inline-flex";
  86. private string GetDateTimePickerStyle
  87. => $"{GetControlFont()} {GetBackColor()}";
  88. }