在下面的C#代码中,即使我选择了自己的一年,但价值仍然只是1920年。我可以看到下拉框中显示的所有值,但是当我选择一个值并提交它时,只有1920传递给数据库。
protected void Page_Load(object sender, EventArgs e)
{
DropDownList3.Items.Clear();
for (int i = 1920; i <= 2000; i++)
{
DropDownList3.Items.Add(i.ToString());
}
}
protected void Button1_Click(object sender, EventArgs e)
{
sbtc.dex(DropDownList3.SelectedItem);
}
有谁能告诉我我哪里弄错了?
答案 0 :(得分:3)
因为当您单击按钮时,它会再次执行Page_Load
事件中的代码。解决方案是仅将下拉值设置一次。您可以使用Page.IsPostBack
属性来检查这是初始加载还是回发。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DropDownList3.Items.Clear();
for (int i = 1920; i <= 2000; i++)
{
DropDownList3.Items.Add(i.ToString());
}
}
}
答案 1 :(得分:2)
试试这个;
if(!IsPostBack)
[
for (int i = 1920; i <= 2000; i++)
{
DropDownList3.Items.Add(i.ToString());
}
}
答案 2 :(得分:1)
尝试同样设置所选项目的值,确保检查回发
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DropDownList3.Items.Clear();
for (int i = 1920; i <= 2000; i++)
{
DropDownList3.Items.Add( new ListItem(i.ToString(), i.ToString()));
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
sbtc.dex(DropDownList3.SelectedItem);
}