如何在下拉列表中一起获取月份和年份,月份列表应显示接下来的3个月列表,例如,如果当前月份为2018年1月,则下拉列表应显示Jan-2018,Feb-2018,Mar- 2018。
有人可以建议我如何实现这一目标吗?
Jan-2018
Feb-2018
Mar-2018
答案 0 :(得分:1)
一种简单的方法是使用Enumerable.Range
,并在GetMonthName
中用DateTimeFormatInfo
获取正确的月份名称
DropDownList1.DataSource = Enumerable.Range(1, 12).Select(i => new KeyValuePair<int, string>(i, DateTimeFormatInfo.CurrentInfo.GetMonthName(i).Substring(0, 3) + "-" + DateTime.Now.Year)).ToList();
DropDownList1.DataValueField = "key";
DropDownList1.DataValueField = "value";
DropDownList1.DataBind();
DDL的value字段仍然是1到12的整数,因此您可以轻松地在后面的代码中使用几个月。
更新
如果要从当月开始使用,请使用
Enumerable.Range(0, 11).Select(i => new KeyValuePair<int, string>(i, DateTimeFormatInfo.CurrentInfo.GetMonthName(DateTime.Now.AddMonths(i+1).Month).Substring(0, 3) + "-" + DateTime.Now.AddMonths(i).Year)).ToList();
答案 1 :(得分:0)
static IEnumerable<KeyValuePair<DateTime, string>> GetNextMonts(int number)
{
DateTime month = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
for (int i = 0; i < number; i++)
{
month = month.AddMonths(1);
yield return new KeyValuePair<DateTime, string>(month, month.ToString("MMM-yyyy"));
}
}
此代码返回下一个蒙特的可绑定列表。用作VDWWD的答案。