2012-05-04 2 views
0

나는이 검색을했지만, 나는 약간 다른 것을 얻고 싶다고 생각한다.바인딩 콤보 상자

예를 들어 Person1, Person2, Person3과 같이 3 개의 항목을 정적으로 포함하도록 설정 한 콤보 박스가 있습니다.

다음 개체 (예 : 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

음, 일반적으로 사용자 유형의 컬렉션을 만들어 ComboBox에 바인딩하려고합니다. Selected Person을 보유하고 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(); 
     } 
    }