【问题标题】:ASP.NET CalendarExtender Change culture in an Ajax Panel without refreshing page?ASP.NET CalendarExtender 在 Ajax 面板中更改文化而不刷新页面?
【发布时间】:2014-12-27 05:20:44
【问题描述】:

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

正在更新线程的文化信息

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture)

EnableScriptGlobalization="true"
EnableScriptLocalization="true"

我还需要做什么?

【问题讨论】:

    标签: asp.net updatepanel cultureinfo calendarextender


    【解决方案1】:

    与我现在正在做的事情模糊相关......一些可能会有所帮助的建议: - 我也在做“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 日期选择器,MM 被解释为月份全名,而在 C# 中,MM 是两位数的月份。更糟糕的是,C# 中的 yyyy 是四位数的年份,但对于 jQuery datepicker,yy 是四位数的年份,所以 yyyy 会以 20152015 结尾。你可以做一个脏:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 2014-03-09
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2016-06-10
      相关资源
      最近更新 更多