2010-10-21 65 views
0

我试图从数据库中提取月份和年份,并将其显示为在下拉列表中选中。例如:月份和年份,请考虑2和2013年。我希望下拉列表显示Febraury,并在页面加载时显示为2013年。 当我尝试下面的代码时,它没有显示我2和2013,而是显示Jan和2010,这是默认值。你认为我在做错什么,家伙?在页面加载的下拉列表中显示所需的值

<asp:DropDownList ID="ddExpMonth" runat="server" TabIndex="19" Width="80px" CausesValidation="True"> 
</asp:DropDownList> 
&nbsp; 
<asp:DropDownList ID="ddExpYear" runat="server" TabIndex="20" Width="57px" CausesValidation="True"> 
</asp:DropDownList> 

LoadExpDateInfo(); 
ddExpMonth.SelectedIndex = expmonth-1; 
ddExpMonth.SelectedItem.Value = expmonth.ToString(); 

ddExpYear.SelectedIndex = expyear; 
int currentyear = Convert.ToInt16(DateTime.Now.Year); 
int diff = expyear - currentyear; 
ddExpYear.SelectedItem.Value = diff.ToString(); 

expyear and expmonth values are retrieved from database. 


    private void LoadExpDateInfo() 
    { 
     string[] arrMonths = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; 
     ListItem item; 
     for (int i = 0; i < 12; i++) 
     { 
      item = new ListItem(); 
      item.Text = arrMonths[i]; 
      item.Value = Convert.ToString(i + 1); 
      ddExpMonth.Items.Add(item); 
     } 

     for (int i = -1; i < 10; i++) 
     { 
      item = new ListItem(); 
      item.Text = Convert.ToString(System.DateTime.Now.AddYears(1).AddYears(i).Year); 
      item.Value = Convert.ToString(System.DateTime.Now.AddYears(1).AddYears(i).Year); 
      ddExpYear.Items.Add(item); 
     } 
    } 

感谢您的帮助。我很欣赏你的时间:)

+0

不是答案,而是你的循环产生这些年来,似乎在-1开始(为i的值),然后添加1(AddYears(1))来弥补这一点。为什么不从0开始而不加1? – Kendrick 2010-10-21 20:35:29

+0

可能是因为他想加起来10年而没有过去,所以没有意识到他应该已经完成​​了'for(int i = 0; i <= 10; i ++)' – jcolebrand 2010-10-21 20:39:54

+0

这是有道理的。我以为他可能会选择它去年已经过期... – Kendrick 2010-10-21 20:42:23

回答

0

您应该只需设置选定的索引,而不是所选项目的值。以下应该工作,但我希望你的初始代码也有一些效果。你是否在页面生命周期中足够早地设置了选定的索引?您可以通过将选定的索引设置为一个常数值(即3)来测试它,并查看它是否默认为4月。

LoadExpDateInfo(); 
ddExpMonth.SelectedIndex = expmonth-1; 

int currentyear = Convert.ToInt16(DateTime.Now.Year); 
int diff = expyear - currentyear; 
ddExpYear.SelectedIndex = diff; 
+0

令人惊叹!非常感谢肯德里克! :) – Ram 2010-10-22 11:51:21

1

看起来你可能会设置ddExpMonth的所选项目的价值,而不是使与此选择的项目:

ddExpMonth.SelectedItem.Value = expmonth.ToString(); 

而是尝试设置选择的指数是这样的:

ddExpYear.SelectedIndex = 
ddExpYear.Items.IndexOf(
list.Items.FindByValue("the value")); 
1

只要得到你想要选择的项目的价值,做到这一点:

ddExpYear.SelectedValue = yourValue; 
相关问题