Выберите день, месяц и год из списка DropDownList в C # - PullRequest
0 голосов
/ 05 октября 2019

Я использую этот код для заполнения моего собственного Селектора Дня, Месяца и Года, используя три DropDownList в ASP.Net

Теперь мне нужно установить в качестве значения по умолчанию для каждого DDL значение DateTime.MinValue, то есть01/01/0001, поскольку значение даты для записи в базу данных не всегда доступно:

  1. в DDL ddlday Мне нужно значение по умолчанию: 01;
  2. в DDL ddlMonth мне нужно значение по умолчанию: January;
  3. в DDL ddlYear мне нужно значение по умолчанию: 0001;

Использование этого кодаошибка, но:

  1. в DDL ddlday У меня есть значение по умолчанию: 01;
  2. в DDL ddlMonth У меня есть значение по умолчанию: january;
  3. в DDL ddlYear У меня есть значение по умолчанию: 2019;

enter image description here

enter image description here

Пожалуйста, вы можете мне помочь?

Мой код ниже.

Кодовый код

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {           
            DateTime dateofBirth = DateTime.MinValue;

            ddlMonth.DataSource = Enumerable.Range(1, 12).Select(a => new
            {
                MonthName = DateTimeFormatInfo.CurrentInfo.GetMonthName(a),
                MonthNumber = a
            });

            ddlMonth.DataBind();

            ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 99, 100).Reverse();
            ddlYear.DataBind();

            ddlday.SelectedValue = dateofBirth.Day.ToString();
            ddlMonth.SelectedValue = dateofBirth.Month.ToString();
            ddlYear.SelectedValue = dateofBirth.Year.ToString();

            ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
            ddlday.DataBind();
        }
    }
    protected void ddlMonth_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
        ddlday.DataBind();
    }
}

Разметка

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="sc" runat="server">
            </asp:ScriptManager>
            <table>
                <tr>
                    <td>
                        <asp:UpdatePanel ID="updpnlDay" runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:DropDownList ID="ddlday" runat="server">
                                </asp:DropDownList>
                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="ddlMonth" EventName="SelectedIndexChanged" />
                            </Triggers>
                        </asp:UpdatePanel>
                    </td>
                    <td>
                        <asp:UpdatePanel ID="updpnlMonth" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:DropDownList ID="ddlMonth" runat="server" AutoPostBack="true" DataTextField="MonthName"
                                    DataValueField="MonthNumber" OnSelectedIndexChanged="ddlMonth_SelectedIndexChanged">
                                </asp:DropDownList>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </td>

                    <td>
                        <asp:DropDownList ID="ddlYear" runat="server">
                        </asp:DropDownList>
                    </td>
                </tr>
            </table>
        </div>
    </form>
</body>
</html>

1 Ответ

1 голос
/ 05 октября 2019

но ваш ddlYear не имеет значения 1, только годы в диапазоне от 1920 до 2019. Вы хотели включить минимальный год в диапазон?

    ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 99, 100).Reverse().Append(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...