2016-10-19 1 views
0

Я хочу информацию об объекте на SelectedIndexChanged, у меня есть привязка со списком.Как я могу получить тот же объект в событии SelectedIndexChanged, который я связываю с ListBox

Forexample

listbox.bind=list of person object 

теперь на каждом списке ListItem есть человек, объект, я нужен этот человек объект на SelectedIndexChanged события.

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

       //here is the compatibility issue 
       //how can i solve this 
       person ss = ListBox1.SelectedItem as Person; 
     } 
+0

Вы можете использовать использовать 'список [ListBox1.SelectedIndex]' –

ответ

0

Update: Забыли, что ListBox1.DataSource не сохраняется между постбэков так что вам нужно, чтобы сохранить его где-нибудь еще, как состояние представления, если его не большой объект.

Чтобы сохранить его в состояние зрения ваш объект должен быть Serializable

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     List<Person> persons = new List<Person>(); 

     persons.Add(new Person { Id = 1, Name = "Some Name" }); 
     persons.Add(new Person { Id = 2, Name = "Other Name" }); 

     ViewState["Persons"] = persons; 
     ListBox1.DataSource = persons; 
     ListBox1.DataTextField = "Name"; 
     ListBox1.DataValueField = "Id"; 
     ListBox1.DataBind(); 
    } 
} 

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    List<Person> persons = (List<Person>)ViewState["Persons"]; 
    Person person = persons[ListBox1.SelectedIndex]; 
} 
+0

Я проверил ваш код на событие selectedchange datasouce имеют нулевое значение. // DataSource имеет значение Список people = (Список ) ListBox1.DataSource; – bilal

+0

Вы правы, я обновил ответ –