ASP.NET CalendarExtender在没有刷新页面的情况下更改Ajax面板中的文化?

时间:2014-12-27 05:20:44

标签: asp.net updatepanel cultureinfo calendarextender

我有一个ASP.NET页面,它在Ajax UpdatePanel中使用ASP.NET CalenderExtender。用户可以从几种不同的语言中进行选择。我需要使用更新的文化信息更改日历,而不会刷新整个页面。

正在为线程

更新文化信息
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture)

EnableScriptGlobalization="true"
EnableScriptLocalization="true"

我还需要做什么?

1 个答案:

答案 0 :(得分:0)

模糊地与我现在正在做的事情有关......一些可能有帮助的建议: - 我也是在做了“Thread.CurrentThread.CurrentCulture = ...”

之后做的
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

我动态地构建了我的CalendarExtender,但重要的是格式:

ce = new CalendarExtender();
ce.ID = "CalExtender";
ce.Format = ShortDatePatternDoubleDigit;

和其他地方我有这个静态方法:

public static string ShortDatePatternDoubleDigit
    {
        get
        {
            string shortDatePattern = Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern;
            if (!shortDatePattern.Contains("MM"))
                shortDatePattern = shortDatePattern.Replace("M", "MM");
            if (!shortDatePattern.Contains("dd"))
                shortDatePattern = shortDatePattern.Replace("d", "dd");
            if (!shortDatePattern.Contains("yyyy"))
                shortDatePattern = shortDatePattern.Replace("yy", "yyyy");
            return shortDatePattern;
        }
    }

由于我们在美国和英国都有客户,因此日期必须以mm / dd / yyyy或dd / mm / yyyy工作(我们使用屏蔽的编辑扩展器,因此使用两位数的日期和月份)。

在客户端方面,在javascript中我可以访问这样的格式字符串(getter),但我不知道它是否可以设置,我没试过。它可能对你的“无回发”场景有所帮助:

var dateBox = $get('xxxx_DatePicker_TextBox');
var dateFormat = dateBox.CalendarBehavior._format; //this contains dd/MM/yyyy for example

请注意,您可能需要再次更改此格式,例如,我使用的是jQuery UI datepicker,而MM被解释为Month Full Name,而在C#MM中则是两位数的月份。更糟糕的是,C#中的yyyy是四位数的年份,但对于jQuery datepicker,yy是四位数的年份,所以yyyy最终会在20152015结束。你可以做一个肮脏的:

_format.replace(/M/g, "m").replace(/yy/g, "y")