0

年、月、日付ごとに3つのドロップダウンリストがあります。ここで、ユーザーが選択した年と月に従って日付を入力します。通常のドロップダウンリストを使用して試してみたいので、当面は日時ピッカーのオプションを除外します。

これは、値を入力するために通常使用しているコードです。

 protected void Call_Date()
{
    for (int i = 1; i <= 31; i++)
    {
        date0.Items.Add(i.ToString());

    }

    for (int j = 1; j <= 12; j++)
    {
        month0.Items.Add(j.ToString());

    }

    for (int k = DateTime.Now.Year; k <= 2020; k++)
    {
        year0.Items.Add(k.ToString());
    }
}

それに応じて機能させるにはどうすればよいですか?

4

5 に答える 5

0

クライアント側のソリューションで問題ないかどうかはわかりませんが、オプションの 1 つとして Knockout を使用できるようです...次の例のようになります: http://knockoutjs.com/examples/cartEditor.html最初のドロップダウン (月) に応じて、次 (日) に入力し、有効な日付を生成できるように有効な日数を一致させることができます...

そうは言っても、私は最近生年月日フィールド用のエディター テンプレートを作成しました...それはあなたとほぼ同じ設定で、3 つのドロップダウンがあります。また、3 つのドロップダウン ボックスのいずれかが変更されるたびに実行される Javascript を使用して設定される隠しフィールド (実際の日付) もあります。次に、隠しフィールドの値を設定し、フィールドで控えめな検証を実行して、有効な日付をチェックし、そうでない場合はエラーメッセージを表示しようとします...

エディター テンプレートのドロップダウンをチェックする疑似コードは次のとおりです。

$("Dropdown").change(function () {
 if (($("Year").val() != "") && ($("Day").val() != "") && ($("Month").val() != "")) {
   var date = new Date($("Year").val(), $("Month").val() - 1, $("Day").val())
    $("Hidden").val(date.toString("yyyy-MM-dd"));

    $('form').validate().element('Hidden');
  } else {
   $("Hidden").val("");
  }
}
})

最後にクリスが言ったように、2 月 31 日ではなく、有効な日付の日付を確認する必要もあります。サーバー側では、日付に Date.TryParse() を実行して、それが実際の日付であるかどうか、またはフォームが投稿されたときに何かを確認するだけです...

于 2013-02-08T07:34:43.543 に答える
0

フレームワークの DateTime クラスを利用して、選択した年と月から必要な日付を取得する必要があります。

    //build a date for the month and year selected by the user
    DateTime newDate = new DateTime(yearSelected, monthSelected, 1);

    //iterate through the days in that month
    for (int i = newDate.Day; i < DateTime.DaysInMonth(newDate.Year, newDate.Month); i++ )
    {
        //add to your list
    }
于 2013-02-08T07:28:39.927 に答える
0

これを試して;

DateTime myDate = new DateTime((int)year0.SelectedValue,(int)month0.SelectedValue,(int)date0.SelectedValue)  

ただし、@Cris が提起した問題があることを覚えておいてください。

于 2013-02-08T07:23:41.317 に答える
0

DateTime.IsLeapYearメソッドを使用して、うるう年かどうかを確認できます。DateTime 関数を使用したくない場合は、このようにうるう年を計算できます。それが見つかれば、月の日数を見つけるのは簡単です。

1月31日、2月28日・29日(閏年)、3月31日、4月30日、5月31日、6月30日、7月31日、8月31日、9月30日、10月31日、11月30日、12月. 31

于 2013-02-08T07:25:33.320 に答える
0

ここにあなたのためのサンプル例がありますhttp://dotnetstation.wordpress.com/adding-date-year-and-month-in-dropdownlist-using-aspnetc/

于 2013-02-08T07:28:04.393 に答える