5

Problem, który mam, zgodnie z tytułem, polega na tym, że muszę użyć formatu nazwy miesiąca z rokiem, w którym Daty są sprawdzane przez MaskedEditExtender od AjaxControlToolkit. MMM-rrrr dla elementu DateTime to nie to samo co MaskedEditExtender.Mask = "LLL-9999".Czy jest możliwe ustawienie maski dla MaskedEditExtender dla formatu daty MMM-rrrr, który działałby w jakiejkolwiek kulturze?

Jeśli używam lokalizacji w USA, to działa jak urok, ale jeśli przejdę na fr-FR, to nie zadziała, ponieważ krótka reprezentacja miesiąca w języku francuskim używa od 4 do 5 liter (w tym kropki).

Wszelkie pomysły na ten temat? Dzięki.

Odpowiedz

0

Czy możesz ustawić maskę dynamicznie, używając czegoś takiego?

string shortDateFormat = 
    System.Globalization.CultureInfo.DateTimeFormat.ShortDatePattern 
+0

Tried to wcześniej, ale nie, ponieważ format używa różni się od tych wzorców. –

1
 
Here you need to define the mask and mask type explicitly instead of declaring in the control itself. 

Follow the steps 

1. Create a method to get n set mask 


public string Mask 
     { 
      get 
      { 
       return GetPropertyValue("Mask", ""); 
      } 
      set 
      { 

       SetPropertyValue("Mask", value); 
      } 
     } 



2. Create a method to get n set mask type 

    public MaskedEditType MaskType 
     { 
      get 
      { 
       return GetPropertyValue("MaskType", MaskedEditType.None); 
      } 
      set 
      { 
       SetPropertyValue("MaskType", value); 

       AcceptAMPM = false; 
       AcceptNegative = MaskedEditShowSymbol.None; 
       DisplayMoney = MaskedEditShowSymbol.None; 
       InputDirection = MaskedEditInputDirection.LeftToRight; 
       break; 


      } 
     } 


3. Create a method to get the culture and culture date format 



public string CultureName 
     { 
      get 
      { 
       return GetPropertyValue("Culture", ""); 
      } 
      set 
      { 
       try 
       { 
        if (!String.IsNullOrEmpty(value)) 
        { 
         System.Globalization.CultureInfo CultControl = System.Globalization.CultureInfo.GetCultureInfo(value); 
         SetPropertyValue("Culture", CultControl.Name); 
         CultureDatePlaceholder = CultControl.DateTimeFormat.DateSeparator; 

         char sep = System.Char.Parse(CultControl.DateTimeFormat.DateSeparator); 
         string[] arrDate = CultControl.DateTimeFormat.ShortDatePattern.Split(sep); 
         string ret = arrDate[0].Substring(0, 1).ToUpper(CultControl); 
         ret += arrDate[1].Substring(0, 1).ToUpper(CultControl); 
         ret += arrDate[2].Substring(0, 1).ToUpper(CultControl); 
         CultureDateFormat = ret; 


        } 
        else 
        { 
         SetPropertyValue("Culture", ""); 
         CultureDatePlaceholder = ""; 

        } 
       } 
       catch 
       { 
        throw new ArgumentException("The Culture is invalid!"); 
       } 
      } 
     } 


4. Create a method to get the culture date format 



public string CultureDateFormat 
     { 
      get 
      { 
       return GetPropertyValue("CultureDateFormat", ""); 
      } 
      set 
      { 
       SetPropertyValue("CultureDateFormat", value); 
      } 
     } 


5. Now load the value on pre render 



protected override void OnPreRender(EventArgs e) 

     { 
      base.OnPreRender(e); 
      switch (MaskType) 
      { 
       case MaskedEditType.Date: 
        { 
         AcceptAMPM = false; 
         AcceptNegative = MaskedEditShowSymbol.None; 
         DisplayMoney = MaskedEditShowSymbol.None; 
         InputDirection = MaskedEditInputDirection.LeftToRight; 
         break; 
        } 

      } 
      System.Globalization.CultureInfo CultControl = System.Globalization.CultureInfo.CurrentCulture; 
      if (!String.IsNullOrEmpty(CultureName)) 
      { 
       CultControl = System.Globalization.CultureInfo.GetCultureInfo(CultureName); 
      } 
      CultureDatePlaceholder = CultControl.DateTimeFormat.DateSeparator; 

      char sep = System.Char.Parse(CultControl.DateTimeFormat.DateSeparator); 
      string[] arrDate = CultControl.DateTimeFormat.ShortDatePattern.Split(sep); 
      string ret = arrDate[0].Substring(0, 1).ToUpper(CultControl); 
      ret += arrDate[1].Substring(0, 1).ToUpper(CultControl); 
      ret += arrDate[2].Substring(0, 1).ToUpper(CultControl); 
      CultureDateFormat = ret; 

     } 


6. Last create a function to validate the user input 

    private bool validateMaskType() 
      { 
       string mask = Mask; 
       MaskedEditType maskType = MaskType; 
       if (!string.IsNullOrEmpty(mask) && (maskType == MaskedEditType.Date)) 
       { 
        string validMask = MaskedEditCommon.GetValidMask(mask); 
        switch (maskType) 
        { 
         case MaskedEditType.Date: 
          return Array.IndexOf(new string[] { "99/99/9999", "99/9999/99", "9999/99/99", "99/99/99" }, validMask) >= 0; 

          break; 
        } 
       } 
       return true; 
      } 

Powiązane problemy