【解決方法】rangevalidator で現在の日付と過去 5 つの日付を有効にする方法


こんにちは、みんな、
過去 5 つの日付と共に現在の日付のみをユーザーに表示する必要があります。 休息日/月は無効にする必要があります。 htmlと.netの範囲バリデーターを使用してこれを達成するのを手伝ってください

私が試したこと:

ASP.NET
<td class="auto-style1" align="left" style="vertical-align: top;">
    Entry Date
</td>
<td align="left" style="vertical-align: top;" class="auto-style2">
    <asp:TextBox ID="txtFromDate" runat="server" CssClass="textbox" TabIndex="6" Width="100px"></asp:TextBox>
    <cc1:CalendarExtender ID="CEPostingFromDate" runat="server" TargetControlID="txtFromDate">
    </cc1:CalendarExtender>
    <cc1:MaskedEditExtender ID="MaskedEditExtender1" runat="server" 
        CultureAMPMPlaceholder="" 
        CultureCurrencySymbolPlaceholder="" 
        CultureDateFormat="" 
        CultureDatePlaceholder="" 
        CultureDecimalPlaceholder="" 
        CultureThousandsPlaceholder="" 
        CultureTimePlaceholder="" 
        Enabled="True" 
        Mask="99/99/9999" MaskType="Date" 
        TargetControlID="txtFromDate" 
        UserDateFormat="MonthDayYear"
    >
    </cc1:MaskedEditExtender>
    <cc1:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" 
        Enabled="True" 
        TargetControlID="txtFromDate" 
        WatermarkText="MM/DD/YYYY"
    >
    </cc1:TextBoxWatermarkExtender>
    <asp:RangeValidator ID="RangeValidator2" runat="server" 
        ControlToValidate="txtFromDate" 
        ErrorMessage="Choose only the enabled dates" 
        MaximumValue="01/10/2023" 
        MinimumValue="01/05/2023" 
        Type="Date"
    >*</asp:RangeValidator>
    <cc1:ValidatorCalloutExtender ID="ValidatorCalloutExtender2" runat="server" TargetControlID="RangeValidator2">
    </cc1:ValidatorCalloutExtender>
</td>

解決策 1

プロパティを設定するには、コードを使用する必要があります。

ASP.NET
<asp:RangeValidator ID="RangeValidator2" runat="server" 
    ControlToValidate="txtFromDate" 
    ErrorMessage="Choose only the enabled dates" 
    Type="Date"
    OnInit="RangeValidator2_Init"
>*</asp:RangeValidator>
C#
protected void RangeValidator2_Init(object sender, EventArgs e)
{
    RangeValidator validator = (RangeValidator)sender;
    DateTime today = DateTime.Today;
    validator.MaximumValue = today.ToString("yyyy/MM/dd");
    validator.MinimumValue = today.AddDays(-5).ToString("yyyy/MM/dd");
}

注意: ドキュメントに注意してください:

指定すれば ValidationDataType.Date のために BaseCompareValidator.Type アプリケーションのカルチャをプログラムで設定せずにプロパティを使用する場合は、次のようなカルチャに中立な形式を使用する必要があります。 YYYY/MM/DD、 のために MaximumValueMinimumValue プロパティ。 そうしないと、日付が正しく解釈されない可能性があります。

編集: カレンダーで使用できる日付を制限するには、同じ方法でプロパティを設定します。

ASP.NET
<cc1:CalendarExtender ID="CEPostingFromDate" runat="server" 
    TargetControlID="txtFromDate"
    OnInit="CEPostingFromDate_Init"
/>
C#
protected void CEPostingFromDate_Init(object sender, EventArgs e)
{
    CalendarExtender extender = (CalendarExtender)sender;
    DateTime today = DateTime.Today;
    extender.StartDate = today.AddDays(-5);
    extender.EndDate = today;
}

Ajax コントロール ツールキットのカレンダーの例とデモ[^]

コメント

タイトルとURLをコピーしました