我试图从数据库中提取月份和年份,并将其显示为在下拉列表中选中。例如:月份和年份,请考虑2和2013年。我希望下拉列表显示Febraury,并在页面加载时显示为2013年。 当我尝试下面的代码时,它没有显示我2和2013,而是显示Jan和2010,这是默认值。你认为我在做错什么,家伙?在页面加载的下拉列表中显示所需的值
<asp:DropDownList ID="ddExpMonth" runat="server" TabIndex="19" Width="80px" CausesValidation="True">
</asp:DropDownList>
<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);
}
}
感谢您的帮助。我很欣赏你的时间:)
不是答案,而是你的循环产生这些年来,似乎在-1开始(为i的值),然后添加1(AddYears(1))来弥补这一点。为什么不从0开始而不加1? – Kendrick 2010-10-21 20:35:29
可能是因为他想加起来10年而没有过去,所以没有意识到他应该已经完成了'for(int i = 0; i <= 10; i ++)' – jcolebrand 2010-10-21 20:39:54
这是有道理的。我以为他可能会选择它去年已经过期... – Kendrick 2010-10-21 20:42:23