【问题标题】:ASP.NET DateTime PickerASP.NET 日期时间选择器
【发布时间】:2010-11-30 22:55:36
【问题描述】:

是否有任何与 ASP.NET 日历控件相得益彰的免费/开源时间选择器控件?

【问题讨论】:

  • 你看到或尝试过 jQuery UI 吗?有一个非常棒的日期时间选择器。
  • 这里是该选择器的链接:milesich.com/timepicker
  • sebastian & john,我没有尝试过 jquery。界面很好看,我试试看。再次感谢。
  • 更新:我认为 jQuery 更好。我试了一下,效果很好。

标签: asp.net datetime picker


【解决方案1】:

您的问题的答案是是的有很好的免费/开源时间选择器控件与 ASP.NET 日历控件配合得很好。

ASP.NET 日历控件只写一个 HTML 表格。

如果您使用的是 HTML5 和 .NET Framework 4.5,则可以改用 ASP.NET TextBox 控件并将TextMode 属性设置为“日期”、“月份”、“周”、“时间”或“ DateTimeLocal”——或者如果您的浏览器不支持此功能,您可以将此属性设置为“DateTime”。 然后,您可以读取 Text 属性以从 TextBox 中以字符串形式获取日期、时间、月份或星期。

如果你使用的是.NET Framework 4.0或更早的版本,那么你可以使用HTML5的<input type="[month, week, etc.]">;如果您的浏览器不支持此功能,请使用<input type="datetime">

如果您需要服务器端代码(用 C# 或 Visual Basic 编写)来获取用户在日期字段中输入的信息,那么您可以尝试在服务器上运行该元素,方法是在输入标签。 与所有 ASP 一样,确保为该元素提供一个 ID,以便您可以在服务器端访问它。 现在您可以读取 Value 属性来获取输入的日期、时间、月份或星期作为字符串。

如果您无法在服务器上运行此元素,则除了 <input type="[date/time/month/week/etc.]" 之外,您还需要一个隐藏字段。 在提交函数中(用JavaScript编写),将隐藏字段的值设置为输入类型=“日期”,或“时间”,或“月”,或“周”的值——然后在服务器上——侧代码,将该隐藏字段的 Value 属性也读取为字符串。

确保 HTML 的隐藏字段元素可以在服务器上运行。

【讨论】:

    【解决方案2】:

    在文本框中添加:

    textmode="Date"
    

    它给你这样漂亮的日期选择器:

    这方面的其他变体是:

    textmode="DateTime"
    

    它给你这样的外观:

    textmode="DateTimeLocal"
    

    【讨论】:

      【解决方案3】:

      JQuery 拥有最好的 datepicker 恕我直言。虽然它不是特定于 .Net 的,但它仍然很好用。

      HTML:

      <input type="text" value="9/23/2009" style="width: 100px;" readonly="readonly" name="Date" id="Date" class="hasDatepicker"/>
      

      在头部元素中:

      <script src="../../Scripts/jquery-1.3.2.min.js" language="javascript" type="text/javascript"/>
      <script src="../../Scripts/jquery-ui-1.7.1.custom.min.js" type="text/javascript"/>
      

      就这么简单!

      【讨论】:

      • @Chuck-i 接受了您的解决方案,但让您知道您缺少日期选择器所需的以下实例化。 '$("#Date").datepicker();'
      • 如果我错了请纠正我,但是这个jQuery控件不支持“日期时间”的“时间”部分。我错了吗?我看不出这个控件是一个日期时间选择器,因为它只是一个日期选择器。
      • @SoftwareGeek 我在哪里添加这个实例化
      • @AbdallahRizk 在页面底部的
      【解决方案4】:

      由于它是我唯一使用过的,我建议使用 http://www.ajaxcontroltoolkit.com/ 的 CalendarExtender

      【讨论】:

      • 最后一次尝试使用这个工具包我放弃了第一次需要自定义/扩展的东西。源代码太可怕了。我当然希望它们从那时起有所改进,但根据我的经验(以及丰富的更好的 Ajax 控制选项,如 Ext、YUI、Dojo 等),我会像瘟疫一样避免使用整个库。
      • sshow,我正在使用 ajaxcontroltoolkit 作为日历,但它不支持时间组件
      • MaskedEdit 有没有可能给你想要的东西? ajaxcontroltoolkit.com/MaskedEdit/MaskedEdit.aspx
      • 它可以工作,但对用户不太友好。它应该像前面提到的 jquery 演示一样毫不费力,但我在将它与 asp.net 集成时遇到了问题
      【解决方案5】:

      这是没有 jquery 的解决方案。

      在WebForm中添加Calendar和TextBox -> WebForm的源码有这个:

      <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="DateChange">
      </asp:Calendar>
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      

      在WebForm的cs文件中创建方法:

      protected void Page_Load(object sender, EventArgs e)
          {
              TextBox1.Text = DateTime.Today.ToShortDateString()+'.';
          }
      
          protected void DateChange(object sender, EventArgs e)
          {
              TextBox1.Text = Calendar1.SelectedDate.ToShortDateString() + '.';
          }
      

      方法 DateChange 与日历事件 SelectionChanged 相关联。它看起来像这样: DatePicker Image

      【讨论】:

        【解决方案6】:
        <asp:TextBox ID="TextBox1" runat="server" placeholder="mm/dd/yyyy" Textmode="Date" ReadOnly = "false"></asp:TextBox>
        <asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" />
        

        【讨论】:

          【解决方案7】:

          Basic Date Picker Lite

          这是他们的旗舰产品的免费版本,但它包含一个原生用于 asp.net 的日期和时间选择器。

          【讨论】:

            【解决方案8】:

            如果您正在使用引导程序,请尝试bootstrap-datepicker

            【讨论】:

              【解决方案9】:

              有一个简单的、开箱即用的实现:HTML 5 input type="date" 和其他与日期相关的输入类型。

              好吧,你不能对控件设置太多样式 doesn't work on every browser,但从长远来看,如果所有现代浏览器都支持它并且不想包含不支持的重型库,它仍然是一个非常好的选择在移动设备上并不总是那么好。

              【讨论】:

                【解决方案10】:

                如果您想使用文本框,请注意将 TextMode 属性设置为“日期”在 Internet Explorer 11 上不起作用,因为它目前不支持“日期”、“日期时间”或“时间” " 价值观。

                这个例子说明了如何使用文本框来实现它,包括日期验证(因为用户可以只输入数字)。它适用于 Internet Explorer 11 以及其他网络浏览器。

                <asp:Content ID="Content"
                         ContentPlaceHolderID="MainContent"
                         runat="server">
                
                <link rel="stylesheet"
                    href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
                   <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
                   <script>
                   $(function () {
                   $("#
                   <%= txtBoxDate.ClientID %>").datepicker();
                   });
                 </script>
                 <asp:TextBox ID="txtBoxDate"
                           runat="server"
                           Width="135px"
                           AutoPostBack="False"
                           TabIndex="1"
                           placeholder="mm/dd/yyyy"
                           autocomplete="off"
                           MaxLength="10"></asp:TextBox>
                 <asp:CompareValidator ID="CompareValidator1"
                                    runat="server"
                                    ControlToValidate="txtBoxDate"
                                    Operator="DataTypeCheck"
                                    Type="Date">Date invalid, please check format. 
                 </asp:CompareValidator>
                 </asp:Content>
                

                【讨论】:

                  【解决方案11】:
                  @Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control", @type = "date" } })
                  

                  效果很好

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-09-11
                    • 2014-05-25
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-04-30
                    相关资源
                    最近更新 更多