Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically Populate Time Drop Downs in ASP.NET

Tags:

c#

asp.net

I have a requirement to populate 2 drop down list with hours and minutes. My current method of populating the drop downs doesn't format the numbers correctly as I require the leading 0 for the first 9 number i.e 01,02,03 not 1,2,3 as is currently happening.

C#

protected override void OnInit(EventArgs e)
{
  base.OnInit(e);
  if (!IsPostBack)
     {
        // Populate and Bind Time drop downs
        ddlOh1OpenHours.DataSource = Enumerable.Range(00, 24);
        ddlOh1OpenHours.DataBind();
        ddlOh1OpenMinutes.DataSource = Enumerable.Range(00, 60);
        ddlOh1OpenMinutes.DataBind();
      }
}

ASPX

<asp:DropDownList ID="ddlOh1OpenHours" runat="server" />
<span>:</span>
<asp:DropDownList ID="ddlOh1OpenMinutes" runat="server" />

Result:

<select name="ctl00$MainContent$ddlOh1OpenHours" id="ctl00_MainContent_ddlOh1OpenHours">
    <option selected="selected" value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
</select>
like image 722
benni_mac_b Avatar asked Dec 27 '22 13:12

benni_mac_b


1 Answers

Just use ToString with the proper format:

var hours = Enumerable.Range(00, 24).Select(i => i.ToString("D2"));
var minutes  = Enumerable.Range(00, 60).Select(i => i.ToString("D2"));

dlOh1OpenHours.DataSource = hours;
ddlOh1OpenHours.DataBind();
ddlOh1OpenMinutes.DataSource = minutes;
ddlOh1OpenMinutes.DataBind();

> Demo <

Standard Numeric Format Strings

like image 184
Tim Schmelter Avatar answered Jan 11 '23 16:01

Tim Schmelter