1

在下面的 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);        
    }

谁能告诉我我在哪里做错了?

4

3 回答 3

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());
        }
  }
}
于 2013-04-05T14:16:07.637 回答
2

试试这样;

if(!IsPostBack)
[
    for (int i = 1920; i <= 2000; i++)
    {
       DropDownList3.Items.Add(i.ToString());
    }
}
于 2013-04-05T14:16:56.923 回答
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);        
}
于 2013-04-05T14:18:42.907 回答