Bonjour,
dans une page asp, j'ai un composant datagrid dans lequel j'affiche les données d'un datatable. Ce datatable contient des informations sur une personne. Pour faciliter la récupération de la personne lors des événements, j'ajoute dans la première colonne de mon datatable l'objet Person, et d'autres données dans les colonnes suivantes (la première colonne du datagrid contiendra le nom et prénom de la personne grâce au ToString() de la classe).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class Person { private int _id; private string _name; private string _firstName; private string _job; ... public override string ToString() { return this.Name + " " + this.FirstName; } }Malheureusement, une fois le datagrid rempli, je n'ai aucun moyen de récupérer la personne directement (le datagrid ne contient que des String).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 List<Person> persons; this.personsTable = new DataTable(); this.personsTable.Columns.Add(PERSON_NAME_DATA_FIELD, typeof(Person)); this.personsTable.Columns.Add(PERSON_JOB_DATA_FIELD, typeof(string)); DataRow row; object[] items; foreach (Person person in persons) { row = this.personsTable.NewRow(); items = new object[PERSON_LIST_ELEMENT_COUNT]; items[PERSON_NAME_COLUMN_INDEX] = person; items[PERSON_JOB_COLUMN_INDEX] = person.Job; row.ItemArray = items; this.personsTable.Rows.Add(row); } this.PersonsDataGrid.DataSource = this.personsTable; this.PersonsDataGrid.DataBind();
Je voulais donc conserver dans ma page le datatable, pour ensuite y récupérer la personne de la ligne sélectionnée. Or, je n'ai aucun moyen direct de connaitre la ligne du datatable correspondant à la ligne sélectionnée dans le datagrid...
Comment puis-je faire le lien facilement entre la ligne sélectionnée du datagrid et l'objet Person correspondant, sans avoir à créer une colonne invisible contenant l'id de la personne ?
Merci
Partager