2012-07-30 117 views
0

我有一个列表,我根据我创建的Enum来填充一年中的所有月份。我的密钥和值设置为Jan/01,Feb/02等。如果当前月份是Jan,那么我希望DEC设置为selected = true,如果不是上个月为selected = ture设置的话。我如何设置选定的值如何在SelectListItems列表中实现循环缓冲区?

List<SelectListItem> month = Framework.Enums.Month_List().Select(T => new   SelectListItem() { Text = T.Key, Value = T.Value.ToString() }).ToList(); 
     //make the previous month as "selected" 
     int currentMonth = DateTime.Now.Month; 
     if(currentMonth == 1) //which is Jan 

现在在这里我想将Dec(12)设置为选定值,否则设置上个月。

TIA Sue。

回答

1

难道不是这样的吗?基本上你必须赶上一月的边缘情况。接下来的部分是在列表中找到适当的项目,并将其selected属性设置为True。

List<SelectListItem> month = Framework.Enums.Month_List().Select(T => new 
    SelectListItem() { Text = T.Key, Value = T.Value.ToString() }).ToList(); 
     //make the previous month as "selected" 
     int currentMonth = DateTime.Now.Month; 
     if(currentMonth == 1){ 
      month.Find(x=>x.Value == 12).Selected = true; 
     }else{ 
      month.Find(x=>x.Value == ((currentMonth - 1).ToString())).Selected = true; 
     } 
     return month; 
+0

谢谢@汤米,它抱怨“第一()”方法。因此,我的代码更改为if(currentMonth == 1){month.Find(x => x.Value ==“12”)。Selected = true; } else {month.Find(x => x.Value ==((currentMonth - 1).ToString()))。Selected = true; }但它现在抱怨“对象引用未设置为对象的实例” – sansid 2012-07-31 17:20:54

+0

哪部分给你提供空引用异常?另外,对于First()问题,您需要确保使用System.Linq;是在你的班级/控制器的顶部:)查找应该适用于你需要做的事情。你确定在SelectList List中正确设置了文本/值(而不是反转或空吗?)如果没有匹配你的列表中的内容,这将抛出null异常... – Tommy 2012-07-31 17:31:32

+0

System.Linq被列出,不确定为什么它会抱怨First()。是的,你是对的,我的值为1月1日,2月2日等,但DateTime.Now.Month 7月返回7而不是“07”。谢谢。如何将选定的值存储到变量中 – sansid 2012-07-31 17:51:16