6
votes

Est-il possible de lier un ASP: GridView à une liste ?

J'ai une grille de grille: xxx

que j'essaie de définir la DataSource soit une liste () Restitution est une structure publique composée uniquement de membres du public; IE: xxx

La liaison de données a l'air assez inoffensionnable, aussi: xxx

Cependant, une exception est levée sur le < Code> Databind () Déclaration avec le message Moins que utile de:

"Un champ ou une propriété portant le nom" Jobnnumber "n'a pas été trouvé sur la source de données sélectionnée."

Je ne comprends pas pourquoi cela ne fonctionne pas; Bien que la plupart des exemples et des cas d'utilisation semblent utiliser Dataset s Il semble qu'il doit prendre en charge les objets implémentant ienumerable . Y a-t-il quelque chose de spécial que je dois faire pour lui permettre de travailler?


1 commentaires

Votre code a l'air correct pour moi. Êtes-vous sûr de votre liaison avec la source de données correcte et que ce n'est pas nul ou quoi que ce soit.


3 Réponses :


11
votes

Convertissez tous les champs publics pour les propriétés publiques et il devrait fonctionner. XXX


4 commentaires

Mais l'exception dit "un champ ou une propriété"


@Magnus ah, vrai! J'ai toujours utilisé des propriétés. Pouvez-vous donner des propriétés un coup? Si cela ne fonctionne pas, je vais supprimer ma réponse.


@Magnus semble être chuté pour la "confiance quelle que soit l'exception", ainsi que moi aussi bien que moi. Il s'avère que ce n'est pas apparaître pour soutenir la liaison de données à partir de membres (même public), seules les propriétés ...


Dans vb.net, il fonctionne: `Structure publique ContainerErelease Biens publics ConfoutEreleAssidesID comme entier Public Propriété ContereDid comme entier Public Remondue en tant que système.DateTime ... Structure finale



1
votes

Essayez ceci:

<asp:GridView ID="grdRestitutions" runat="server" AutoGenerateColumns="False">
 <Columns>
  <asp:templatefield headertext="Job">
    <itemtemplate>
          <asp:label id="JobNumberLabel"
            Text="<%# ((Restitution)Container.DataItem).JobNumber %>" 
            runat="server"/> 
    </itemtemplate>
  </asp:templatefield>
 </Columns>
</asp:GridView>


0 commentaires

1
votes

Oui, vous devriez être capable de lier la liste dans ce cas. La chose est que vous devez faire quelque chose de plus comme ceci: xxx

si cela ne fonctionne pas, vous pouvez éventuellement essayer d'utiliser des templatecolumn comme: xxx

non testé mais devrait vous donner un endroit où aller ...


0 commentaires