2012-05-04 190 views
0

我已经完成了搜索,但是我相信我想实现稍微不同的东西。绑定组合框

我有一个组合框设置为静态包含3个项目,例如Person1,Person2,Person3。

然后我有一个对象,例如名为Person。该对象将包含一个名为PersonType的属性,可能是Person3。我想要做的是将Person对象绑定到组合框,并且在加载时,组合框应该将person3突出显示为选定的项目。我怎么能这样做呢?我希望它与我的其他控件一样受到双向约束。

public class Person : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private string _PersonType; 

    public string PersonType 
    { 
     get { return _PersonType; } 
     set 
     { 
      _Description = value; 
      NotifyPropertyChanged("PersonType"); 
     } 
    } 

    public void NotifyPropertyChanged(string name) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 
+1

最好的办法是让'_PersonType'属性变成'enum'。这将允许你绑定'ComboBox'的'SelectedIndex'属性。 –

+0

那么,你通常要创建一个Person类型集合并将其绑定到你的ComboBox。您可能还想创建一个属性来保存选定人员并将其绑定到SelectedItem属性。这对你有用吗? –

回答

0

下面应该工作:

ddlPerson.SelectedItem = objPerson.PersonType; 
0

后续的代码应该实现自己的目标。我在我的机器上运行它,它工作。

private void BindPerson() 
    { 
     Person p2 = new Person(); 
     p2.PersonType = "Person2"; 
     Person p3 = new Person(); 
     p3.PersonType = "Person3"; 

     ListItem person2ListItem = new ListItem(); 
     person2.Text = p2.PersonType; 
     person2.Value = p2.PersonType; 
     listBox.Items.Add(person2ListItem); 

     ListItem person3ListItem = new ListItem(); 
     person3.Text = p3.PersonType; 
     person3.Value = p3.PersonType; 
     person3.Selected = true; // This will make it selected 
     listBox.Items.Add(person3ListItem); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindPerson(); 
     } 
    }