我做了一个DropDownList ,和label在选择DropDownList时,lable跟所选的内容变化
我做了两个实验一个是public void Binder()
{
for (int i = 1970; i <= 2008; i++)
      {
ListItem list=new ListItem();
list.Value=i.ToString();
list.Text="name"+i.ToString();
this.DropDownList1.Items.Add(list);
       }       }
rivate void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
this.Label1.Text=DropDownList1.SelectedItem.Text; }
一个是和数据库绑定的
public void SetWind()
{
  this.DropDownList1.DataSource=this.CreateSource().Tables[0];
  this.DropDownList1.DataTextField=this.CreateSource().Tables[0].Columns[1].ToString();
          this.DropDownList1.DataValueField=this.CreateSource().Tables[0].Columns[0].ToString();
          this.DropDownList1.DataBind();
}
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
this.Label1.Text=DropDownList1.SelectedItem.Text; }
我发现在和数据库绑定时必须在加载时加上
    if(!Page.IsPostBack)
{
 SetWind();
}
但第一种方法确不要,请问一下这是为什么

解决方案 »

  1.   

    第一个你是直接加上去的.
    第二个如果不在Page_Load里调用,是不会运行的!
      

  2.   

    简单的说,一个是静态的,一个是动态的,所以第二个就必须在Page_Load里面调用了
      

  3.   

    第一个Binder()不也要放在load里面,只是page.ispostback可要可不要
      

  4.   

    第二个如果不加上Page.IsPostBack,每次PostBack会重新读取数据库添加新的item到DropDownList1中(原来的item还在),这样SelectedItem因为新加入的item会刷新,所以有问题。
      

  5.   

    TO cmic,把Binder()放在load中不加Page.IsPostBack难道不会重新进行计算吗?
      

  6.   

    没有加Page.IsPostBack一定也会计算的
    但跟数据库的重新绑定了,你选择的数据就会丢失的,而计算不会使你的数据丢失,绑定就会