2012-12-19 2 views
4

J'ai créé un dropdownbox très simple:Obtenir le nom du mois affiché en très simple dropdownbox

<asp:DropDownList ID="MonthDropDown" runat="server" AutoPostBack="True"> 
</asp:DropDownList> 

code Derrière:

MonthDropDown.DataSource = Enumerable.Range(1, 12); 
MonthDropDown.SelectedIndex = DateTime.Now.Month; 
MonthDropDown.DataBind(); 

Est-il possible d'obtenir le MonthDropDown (mon dropdownbox) à afficher le nom du mois, au lieu de la valeur numérique du mois. Je pense qu'il pourrait être quelque chose comme

DateTimeFormatInfo.CurrentInfo.GetMonthName(MonthDropDown.SelectedIndex)? 

Répondre

3

Ceci est spécifique à la culture bien sûr, donc chercher sous la CultureInfo classe:

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthIndex); 

Vous pouvez définir les noms de mois que les valeurs dans la zone de liste:

MonthDropDown.DataSource = Enumerable.Range(1, 12) 
    .Select(monthIndex => 
     CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthIndex)) 
    .ToArray(); 

Vous pouvez utilisez également les touches/valeurs si vous voulez toujours que la valeur sélectionnée soit l'index:

MonthDropDown.DataSource = Enumerable.Range(1, 12) 
    .Select(monthIndex=> 
     new ListItem(
      CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthIndex), 
      monthIndex.ToString())) 
    .ToArray(); 
3

Est-ce que vous voulez dire?

for (int n = 1; n <= 12; ++n) 
    MonthDropDown.Items.Add(n, DateTimeFormatInfo.CurrentInfo.GetMonthName(n)); 

MonthDropDown.SelectedIndex = DateTime.Now.Month - 1; // note -1 

Notez que MonthDropDown.SelectedValue sera la valeur d'une base (1 = Janvier), mais MonthDropDown.SelectedIndex sera base zéro (0 = Janvier).

Questions connexes