C# 用月/年填充下拉列表
我有一个日期,我需要在下拉列表中填入从该日期到今天之间的月/年。例如,如果该日期为2010年10月14日,则下拉列表应包含2010年10月、2010年11月、2010年12月和2011年1月C# 用月/年填充下拉列表,c#,asp.net,C#,Asp.net,我有一个日期,我需要在下拉列表中填入从该日期到今天之间的月/年。例如,如果该日期为2010年10月14日,则下拉列表应包含2010年10月、2010年11月、2010年12月和2011年1月 我想这样做的方式是将日期传递给函数,从今天开始向后循环一个月,同时将每个月添加到集合中,直到到达该日期,最后返回字符串集合。然后,在页面加载时填充下拉控件。最后,使用一些带有页面方法的ajax来解析回字符串并触发部分页面重新加载 我只是想知道有没有简单的方法 谢谢。你可以做类似的事情,除了向前数之外,这与你
我想这样做的方式是将日期传递给函数,从今天开始向后循环一个月,同时将每个月添加到集合中,直到到达该日期,最后返回字符串集合。然后,在页面加载时填充下拉控件。最后,使用一些带有页面方法的ajax来解析回字符串并触发部分页面重新加载 我只是想知道有没有简单的方法
谢谢。你可以做类似的事情,除了向前数之外,这与你描述的差不多:
private string[] FillDropDownWithDates(DateTime dt)
{
DateTime dtnow = DateTime.Now;
List<string> values = new List<string>();
if ( (dt <= dtnow))
{
values.Add(String.Format("{0:y}", dt));
}
while ( (dt = dt.AddMonths(1)) <= dtnow || ( dt.Month == dtnow.Month && dt.Year == dtnow.Year) )
{
values.Add(String.Format("{0:y}", dt)); // "March, 2008" YearMonth
}
return values.ToArray();
}
也许你可以试试这个:
static IEnumerable<DateTime> monthsBetween(DateTime startDate, DateTime endDate)
{
return Enumerable.Range(0, (endDate.Year - startDate.Year) * 12 + (endDate.Month - startDate.Month + 1))
.Select(m => new DateTime(startDate.Year, startDate.Month, 1).AddMonths(m));
}
这不会以您想要的确切格式提供结果,但您会得到漂移: 今年
public static List<string> GetMonths(DateTime StartDate)
{
List<string> MonthList = new List<string>();
DateTime ThisMonth = DateTime.Now.Date;
while (ThisMonth.Date > StartDate.Date)
{
MonthList.Add(ThisMonth.ToString("MMMM") + " " + ThisMonth.Year.ToString());
ThisMonth = ThisMonth.AddMonths(-1);
}
return MonthList;
}
public static IEnumerable<int> Range (int start, int count)
{
int end = start + count;
for (int i = start; i < end; i++)
yield return i;
}
var startYear = 2000;
YearDropDownList.ItemsSource= Enumerable.Range(startYear, 2050 - startYear + 1);
一个月来,
一个.tostringmmm格式的可枚举列表。这就是我得到12个月/年的原因。希望代码有帮助
public IEnumerable<SelectListItem> Additional12Months {
get
{
return Enumerable.Range(12, 12).Select(i => new SelectListItem { Value = DateTime.Now.AddMonths(-(i)).ToShortDateString(), Text = DateTime.Now.AddMonths(-(i)).ToString("MMM-yyyy") }).ToList();
}
}
用户可以更改日期吗?或者它是在页面加载时填充并始终固定的?它是在页面加载时加载的:初始日期是用户的注册日期,结束日期是今天。最后,使用一些带有页面方法的ajax解析回字符串并触发部分页面加载。这与你的问题有什么关系?我相信您正在寻找一种优化的方法来查找两个给定日期之间的月差,不是吗?用户可以从该下拉列表中选择一个月,并根据所选月份更新页面上的报告表。我不是在寻找两个日期之间的差异,我是在寻找两个日期之间的月份列表。事实上,我需要它的另一个顺序,因为我正在填充一个下拉列表。我得到了它。谢谢你放弃问题陈述。添加相关标签。