MaskedEditExtender日期控件的日期格式问题

时间:2011-07-14 15:27:28

标签: c# asp.net

我需要为瑞典日期创建MaskedEditExtender,使用格式“yyyy-MM-dd”。

我在下面有以下代码。 CalendarExtender不适用于当前MaskedEditExtender。验证也无法正常运行。

<asp:TextBox ID="txtFSFV"
        MaxLength="100"
        style="width:70px"
        runat="server" />
<asp:HyperLink ID="hplGetCalendar" 
        NavigateUrl="javascript:void(null)" 
        runat="server">
        <img src="~/images/calendar.png" runat="server" />
</asp:HyperLink>
<ajax:CalendarExtender ID="calFSFV"
        Format="yyyy-MM-dd"
        Animated="false"
        PopupButtonID="hplGetCalendar"
        TargetControlID="txtFSFV"
        runat="server" />
<ajax:MaskedEditExtender
        ID="maskedFSFV"
        TargetControlID="txtFSFV" 
        Mask="9999-99-99"
        MessageValidatorTip="true" 
        OnFocusCssClass="MaskedEditFocus" 
        OnInvalidCssClass="MaskedEditError"
        MaskType="Date"
        Century="2000"
        CultureName="sv-SE"
        UserDateFormat="YearMonthDay"
        InputDirection="LeftToRight"
        runat="server"/>
<ajax:MaskedEditValidator ID="MaskedEditValidator1" 
        runat="server" 
        ControlExtender="maskedFSFV" 
        ControlToValidate="txtFSFV" 
        InvalidValueMessage="Date is invalid"
        IsValidEmpty="True" />

有人能告诉我如何为sv-SE文化创建一个掩码("yyyy-MM-dd")

3 个答案:

答案 0 :(得分:1)

让我在日历格式属性上使用yyyy/MM/dd工作,从蒙版扩展器中删除文化,并在页面加载时使用

设置文化
system.threading.thread.currentthread.currentculture =    
system.globalization.cultureinfo.invariantculture

希望它有所帮助。

答案 1 :(得分:0)

当我在后面的代码中设置掩码时(txtFSFV.Mask =“9999/99/99”;)。所以问题似乎与日期分隔符始终(“/”)和CultureInfo“sv-SE”正确地设置为“yyyy-MM-dd”

答案 2 :(得分:0)

我争取在网格视图上更改日期格式数小时,我最终做了以下操作,创建新数据集从现有数据集中克隆它(已经有数据)然后在新创建的日期字段上格式化数据集。还记得使用Global.asax文件设置正确的文化(参见代码)。希望这有帮助

  DataSet ds = new DataSet();
        try
        {
            ds = new DataSet();
            if (filterRateDiary.LoadAll())
            {
                DataView dv = filterRateDiary.DefaultView;
                DataTable dt = dv.Table;
                ds.Tables.Add(dt);

                DataSet ds2 = ds.Clone();
                ds2.Tables[0].Columns["ExpiryDate"].DataType = Type.GetType("System.DateTime");
                ds2.Tables[0].Columns["EffectiveDate"].DataType = Type.GetType("System.DateTime");
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    ds2.Tables[0].ImportRow(row);
                }
                return ds2;
            }

然后在您的global.asax文件中添加以下代码

   protected void Application_BeginRequest(object sender, EventArgs e)
    {
        CultureInfo newCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
        newCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
        newCulture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd HH:mm:ss.fff";
        newCulture.DateTimeFormat.DateSeparator = "-";
        Thread.CurrentThread.CurrentCulture = newCulture;
    }

希望这有帮助