2015-10-13 34 views
0

我正在使用Intranet網站,特別是針對員工的每週監控工具。我需要的是填補了DropDownList與周,每週例如:包含星期的DropDownList

Week : From 12/10/15 to 18/10/15 

我能夠到另一個頁面上,但與年和月進行過濾:

CalendarController c = new CalendarController(); 
ViewBag.ListYears = c.ListYears(iyear); 
ViewBag.ListMonths = c.ListMonths(imonth); 
ViewBag.ListDaysOfMonth = _service.ListDaysOfMonth(iyear.ToString(), imonth.ToString()); 

而且使用的形式進行保存。

如何在我的DDList中填入2015年所有星期的列表?

回答

0

這裏是你如何獲得本年度的一週(kudos goes here):

var jan1 = new DateTime(DateTime.Today.Year , 1, 1); 
//beware different cultures, see other answers 
var startOfFirstWeek = jan1.AddDays(1 - (int)(jan1.DayOfWeek)); 
var weeks= 
    Enumerable 
     .Range(0,54) 
     .Select(i => new { 
      weekStart = startOfFirstWeek.AddDays(i * 7) 
     }) 
     .TakeWhile(x => x.weekStart.Year <= jan1.Year) 
     .Select(x => new { 
      x.weekStart, 
      weekFinish=x.weekStart.AddDays(4) 
     }) 
     .SkipWhile(x => x.weekFinish < jan1.AddDays(1)) 
     .Select((x,i) => new { 
      x.weekStart, 
      x.weekFinish, 
      weekNum=i+1 
     }); 

然後添加周的下拉列表

1

要返回格式化周的列表,你可以使用下面的方法

public List<string> FetchWeeks(int year) 
{ 
    List<string> weeks = new List<string>(); 
    DateTime startDate = new DateTime(year, 1, 1); 
    startDate = startDate.AddDays(1 - (int)startDate.DayOfWeek); 
    DateTime endDate = startDate.AddDays(6); 
    while (startDate.Year < 1 + year) 
    { 
     weeks.Add(string.Format("Week: From {0:dd/MM/yyyy}to {1:dd/MM/yyyy}", startDate, endDate)); 
     startDate= startDate.AddDays(7); 
     endDate = endDate.AddDays(7); 
    } 
    return weeks; 
} 

,然後在控制器

var weeks = FetchWeeks(2105); 
ViewBag.Weeks = new SelectList(weeks); 

但是,這將回發格式化的值,這在控制器中可能沒有多大用處,因此可以修改此值,以便您創建IEnumerable<SelectListItem>,其中Value屬性是表示年份中的星期索引的數字而Text屬性是格式化的文本。

相關問題