la liaison datatable pour afficher la grille
J'ai le code suivant:
Imports System.Data
Partial Class Students_AddWishes Inherits System.Web.UI.Page
Public dt As New DataTable
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
dt.Columns.Add("ID", System.Type.GetType("System.Int32"))
dt.Columns.Add("univirsity", System.Type.GetType("System.Int32"))
dt.Columns.Add("major", System.Type.GetType("System.Int32"))
End Sub
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim row1 As DataRow = dt.NewRow()
row1("ID") = dt.Rows.Count + 1
row1("univirsity") = ddlUnivs.SelectedValue
row1("major") = ddlMajors.SelectedValue
dt.Rows.Add(row1)
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
End Class
Le problème est qu'il ne montre qu'une seule ligne ou enregistrer. Comment faire montre de nombreux dossiers?
OriginalL'auteur Abu Muhammad | 2010-01-04
Vous devez vous connecter pour publier un commentaire.
Votre événement de chargement de page, vous n'êtes pas vérifier si c'est un message de retour:
Chaque fois que vous cliquez sur le btnAdd bouton de votre page fait un post sur le serveur.
Je viens de remarquer que vous n'êtes probablement pas la compréhension de la durée de vie d'un objet.
Que vous l'aviez fait dans votre code:
Le problème avec cela est que vous avez défini ce est une variable de classe et une fois la page chargée, vous avez une instance de type dt que peuvent avoir certaines colonnes associées. Mais dès que vous enregistrez un événement tel qu'un clic sur un bouton que de référence est détruit et un nouveau dt est créé.
Vous aurez à faire certains utilisent des variables de session ou d'une base de données pour stocker l'état de dt.
Voici un exemple en C#:
Et le même code dans vb.net:
Donc maintenant ce que le code n'est instancier un nouvel objet datatable tant que nous sommes sur la page (première publication) et ajoute les colonnes. Une fois qu'il a défini la table de données nous jeter dans un certain état de la session. Lorsque vous cliquez sur le bouton ajouter, vous ne pouvez pas dans votre code précédent, il suffit de garder à l'aide de dt car dt champ d'application a été perdu dans votre code précédent. Nous faisons cela en attribuant le sessioned datatable qui a été stockés à une température datatable. Nous ajoutons la ligne et de réinitialiser la session de cette façon, la prochaine fois que nous ajoutons une ligne, il affiche sur la deuxième ligne, troisième ligne, et ainsi de suite...
Je recommande un bon asp.net livre sur comme au Début ASP.net 3.5 en C# 2008. Il y a une tonne de vb.net ouvrages sur le même sujet.
Comment afficher l'affichage de la grille avec l'ordre par la colonne ci-dessus scienario
OriginalL'auteur JonH
Vous devez enregistrer le datatable à la Session, parce que les variables locales ne sont pas conservées. Donc vous devez faire:
Session enregistre les données de la table de référence à travers des publications comme le web est apatride.
C'est ce que JonH la solution n'est de trop; vous devez le stocker quelque part, ou de le recharger à partir de la base de données sur chaque chargement de la page; malheureusement, une variable globale ne conserve aucune de ses valeurs, de sorte qu'il est essentiellement perdu à chaque fois.... mais le chargement de DB ou de l'utilisation de cache ou autre magasin de données (e / s disque comme fichier XMl) sont toutes les options viables trop... session n'est pas la seule solution, seulement une souvent choisi car il est spécifique à l'utilisateur. Et vous avez raison, plusieurs serveurs est une question trop... donc, vous devez trouver la bonne solution.
il n'y a rien de mal pour cet exemple particulier de les stocker dans une session. Je suppose que vous avez lu la question, il est assez basique. Bien sûr, si votre application va être d'équilibrage de charge qui est une question entièrement différente dans et de lui-même. On peut écrire leur propre mécanisme de mise en cache. En fin de compte, vous devez savoir quoi choisir. L'auteur de ce post n'est pas à la recherche de quelque chose de haut niveau et de la session fonctionne parfaitement bien dans ce cas.
J'ai lu la question, merci. Mon point est qu'on peut devenir quelqu'un de la ligne de base si c'est tout ce qu'ils savent. Dans la plupart des environnements de production, vous n'utilisez pas de Session, alors pourquoi propager son utilisation à travers des exemples?
nous organisons une tonne de production les applications qui utilisent session, qui n'a tout simplement pas de bon sens.
OriginalL'auteur Brian Mains