Comment trouvez-vous objet complexe manuellement DataBind à un contrôle basé sur un modèle comme une ligne dans une gridview?

StackOverflow https://stackoverflow.com/questions/711304

Question

Je me bats avec la syntaxe de liaison de données ici. Par exemple, j'ai une structure de données comme celui-ci -

public class Course{

public string CourseName {get;set;}

public string CourseCode {get;set;}

public List<Instructor> InstructorsTeaching{get;set;}

}

public class Instructor{

public string InstructorName{get;set;}

public string InstructorCode{get;set;}

}

Maintenant, si je veux lier cette liste Cours-à-dire un gridview manuellement, je pouvais faire

<asp:TextBox runat="server" ID="tbCourseName" Text='<%# Bind("CourseName")%>'/>

en spécifiant pour le modèle d'édition de la grille, mais comment la propriété d'enseignement que je lie les instructeurs dire un ListBox dans la même ligne, je ne peux pas comprendre la syntaxe, voici un exaple de ce que j'ai essayé et échoué

<asp:ListBox runat="server" ID="tbInstructors" 
     DataSource='<%# Eval("InstructorsTeaching") as List<Instructor> %>'>
    <asp:ListItem Text='<%# Bind("InstructorCode")%>' 
                 Value='<%# Bind("InstructorName")%>'/>...
 <as:ListBox/>

Mon code ci-dessus ne fonctionne pas sûr :). Idéalement, je voudrais faire dans le balisage au lieu de code sous-jacent.

Était-ce utile?

La solution

Je ne pense pas que vous pouvez définir une source de données comme ça, essayez de régler sur événement RowDataBound de GridView

Autres conseils

Vous avez frappé sur une des principales raisons que ASP.NET 2 voies databinding suce: Vous ne pouvez vraiment pas faire imbriqué databinding 2 voies

.

Pour une chose, mais vous pouvez le faire avec Eval, ASP.NET ne permet pas la syntaxe graphique imbriqué avec l'expression Bind, (soit <% # Bind ( "Client.Prénom")%>).

Au-delà, pour les contrôles de liste imbriqués comme votre scénario, chaque liste exigera un contrôle DataSource supplémentaire. Vous définissez le DataSource sur votre ListBox, qui travaillera pour les expressions Eval, mais pour les expressions de liaison fonctionne, vous devez utiliser DataSourceID pour fournir l'ID d'un contrôle DataSource qui fournit le jeu de résultats intérieure. Et même alors vos résultats seraient kludgy puisque vous ne pouvez mettre à jour une source de données à la fois.

2 voies de liaison de données a probablement été écrit avec SqlDataSource à l'esprit et non ObjectDataSource. Si vous avez un objet graphique multi-niveaux, vous trouverez pénible à utiliser 2 voies de liaison de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top