2012-08-15 109 views
1

我有一个绑定到某些项目的下拉列表。我想用文本框的值替换选定的项目,并再次想要将下拉列表与新值绑定。 为此,我正在将下拉列表项目存储在临时列表中。我怎样才能用文本框的值替换当前选中的项目。替换下拉列表中的项目

for (int i = 0; i < DropDownEmail.Items.Count; i++) 
      { 

       if (?) 
       { 
        ObjRegistration = new ClassRegistration(); 
        ObjRegistration.UserName = TextBoxEmail.Text; 
        tempEmailList.Add(ObjRegistration) 
       } 
       else{ 
        ObjRegistration = new ClassRegistration(); 
        ObjRegistration.UserName = DropDownEmail.Items[i].Text; 
        tempEmailList.Add(ObjRegistration); 
       }      
      } 
+0

如果(DropDownEmail.Items [I] .Selected)? – 2012-08-15 18:17:30

回答

1

您的代码并没有太大的意义,因为它是现在写的,但一般来说,如果你想在一个下拉列表,以取代一个项目,你需要做这样的事情:

var selectedItem = tempEmailList.SelectedItem; //returns a ListItem object 
selectedItem.Text=txtField.Text; 
dropDownList.DataBind(); //Rebind it so you see the change. 

就你而言,看起来你绑定到了一个自定义集合ClassRegistration,但是由于你是在代码隐藏中这样做的,所以一旦你第一次将这些元素绑定到下拉列表中,你只能引用Items在下拉列表中收集所有类型为ListItem

可以,或者,更新您的底层定制收集和重新绑定,为下拉列表:

var tempEmailList= ... //get it from DB or whatever 

tempEmailList.Find(x => x.ID == int.Parse(ddl.SelectedItem.Value)).UserName = txtBox.Text; 

ddl.DataSource = tempEmailList;//re-assing the datasource 
ddl.DataBind();//rebind 
+0

+1用于更新基础集合。 – 2012-08-15 18:43:31