2012-05-04 235 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(); 
     } 
    }