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);  
               }                     
          }
4

1 回答 1

1

您的代码现在写的没有多大意义,但一般来说,如果您想替换下拉列表中的项目,您需要执行以下操作:

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

在您的情况下,您似乎正在绑定到自定义集合,ClassRegistration但由于您是在代码隐藏上执行此操作,因此一旦您第一次将元素绑定到下拉列表,您只有Items在下拉列表都是 type 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
于 2012-08-15T18:33:13.430 回答