Comment puis-je lier un contrôle GridView à un objet personnalisé?
Si j'ai le texte suivant ASP.NET code (il n'est pas complet - de toute évidence, il y a beaucoup manqué, mais aucun de c'est important):
<asp:GridView>
<Columns>
<asp:TemplateField>
<ItemTemplate>
My Label: <asp:Label />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
My Text Box: <asp:TextBox />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Et si j'ai quelque chose comme cela dans le Code-behind:
Private MyListOfObjects As List(Of MyObject)
...
Public Class MyObject
Public MyTextBoxString as String
Public MyLabelString as String
End Class
Comment puis-je lier le contrôle GridView, de sorte qu'une ligne est équivalent à un point dans ma MyListOfObjects
liste, et de sorte que les données à renseigner et persistent dans la page des charges ou des publications? Je n'ai jamais fait de la coutume de la liaison de données comme ça avant, donc une explication complète serait très utile. Tous les tutoriels que j'ai rencontré jusqu'à présent parler de l'aide GridViews directement avec la Base de données de résultats de la requête, et ce n'est pas ce dont j'ai besoin.
Merci!
voir ma réponse à votre question.
OriginalL'auteur qJake | 2011-04-01
Vous devez vous connecter pour publier un commentaire.
Venez de définir la source de données du contrôle gridview à votre objet.
Voici un très similaire post:
La liaison d'une méthode qui retourne une Liste<employé> pour un contrôle gridview
Dirait que vous êtes à l'aide d'une liste dans vb.net. Rappelez-vous les listes peuvent contenir des entiers, des chaînes de caractères, les dates, les objets (inclure les types définis par l'utilisateur (votre objet)).
De sorte que vous pouvez lier un contrôle gridview à une liste d'objet en définissant la propriété datasource à votre liste.
Dans l'exemple ci-dessus, maliste, peut tenir une tonne d'employé objets, etc. Afin de l'affecter à la source de données et
.DataBind()
et voila qu'un gridview avec chaque ligne contenant votre objet.Vous n'avez pas besoin de faire quoi que ce soit, quelles que soient les colonnes que vous avez
<TemplateField>
de votre grille de point de vue sera affiché. Par exemple, supposons que vous avez un client de l'objet avec 3 propriétés de l'âge, le nom et la date de naissance. Si vous souhaitez uniquement afficher le nom, l'âge et puis dans votre .aspx balisage ont 2 templatefields qui ont le nom et l'âge. Ma solution gère cela pour vous.Votre réponse était le plus proche, mais vous n'avez pas décrire comment lier individu
TemplateFields
aux propriétés de l'objet - vous avez besoin d'utiliser<%# Databinder.Eval(Container.DataSource, "MyPropertyName") %>
Darren Pape commentaires "@SpikeX - Si vous utilisez le BoundField objet, alors vous n'avez pas besoin d'utiliser le DataBinder.Eval. Vous avez seulement besoin de définir le champ de données d'attribut de la Propriété correspondante. De Plus, je pense que c'est plus propre. Une seule ligne de code au lieu de 5+ (si onglets correctement)."
OriginalL'auteur JonH
Vous pouvez faire quelque chose comme
dans le balisage et les trucs similaires à votre zone de texte.
OriginalL'auteur Bala R
Premier souvenir de toute la liaison de contrôles comme
GridView
,DropdownList
e.t.c lier à des propriétés publiques, donc d'abord faire votre public et les membres de propriétés publiques.Puis de créer des objets de MyObject de classe et de les ajouter à votre
List<MyObject>
objetEnfin vous pouvez conserver cette liste d'objet en l'enregistrant dans
Session
ouViewState
pour le maintenir après les publications.J'espère que vous pouvez le faire maintenant!!! vous pouvez demander de l'aide si nécessaire.
OriginalL'auteur Waqas Raja