2010-12-05 3 views
0

J'ai une liste que j'ai besoin de lier à une liste que je reçois d'une API. La liste ressemble à ceci:Comment lier à un contrôle dans un ListView ASP.NET

struct DataItem { int level; string name; Guid key }; 
List<DataItem> myList = API.GetList(); 
ListView1.DataSource = myList; 
ListView1.DataBind(); 

Tout cela fonctionne très bien pour l'affichage. Cependant, la table doit éditer la valeur du niveau. Je ne sais pas comment y arriver. J'ai essayé des gestionnaires d'événements sur listView, mais ils ne sont jamais appelés. J'ai essayé une zone de texte pour le champ de niveau (avec Bind et Eval) et un gestionnaire d'événement OnTextChanged, mais le gestionnaire d'événements n'est jamais appelé. (J'ai essayé avec diverses combinaisons de AutoPostBack et ViewState permis.)

Comment est-ce que je peux éditer par programme cette structure de données?

Répondre

0

La liaison de données bidirectionnelle que vous essayez d'implémenter ici ne fonctionnera pas comme ceci - La liste n'implémente pas INotifyPropertyChanged (quelqu'un me corrige si je me trompe).

Vous pouvez envisager d'utiliser un ancien DataTable simple qui peut être à double sens. Si la performance n'est pas un problème très critique, la conversion de votre liste en DataTable (et retour, selon ce que vous voulez faire avec les données modifiées) est assez simple, plutôt que de lutter avec des implémentations personnalisées de types de liste.

Questions connexes