Je suppose que vous feriez mieux d'utiliser un generic list au lieu d'un tableau. Corrige moi si je me trompe.
Si vous avez rempli votre table dans votre codebehind, vous pouvez ajouter le rolw_id en itérant sur toutes les lignes.
Dim allRoleIDs As New List(Of Int32)
For Each row As DataRow In user_roles.Rows
allRoleIDs.Add(CInt(row("role_id)")))
Next
Considérons qu'il est préférable d'utiliser un Datareader ici pour des raisons de performances. Lorsque vous utilisez un jeu de données fortement typé et que vous souhaitez éviter l'aller-retour supplémentaire après avoir rempli le champ Datatable pour ajouter les ID à la liste, vous devez étendre la classe Dataset DataAdapter générée automatiquement (par exemple, user_rolesTableAdapter).
N'utilisez pas la classe designer.vb du dataset pour cela, car elle sera remplacée lors de chaque modification du dataset. Utilisez sa classe codebehind (sans designer.vb) et ajoutez d'abord le même espace de noms à partir de votre TableAdapter généré automatiquement (par exemple DatasetNameTableAdapter où DatasetName est le nom de votre dataset). Puis ajouter la classe suivante (remplacer les commandes correctes, colonne index, nom de classe de la classe partielle):
Namespace DatasetNameTableAdapters
Partial Public Class user_rolesTableAdapter
Public Function getListOfUserRolesID() As System.Collections.Generic.List(Of System.Int32)
Dim list As New System.Collections.Generic.List(Of System.Int32)
Dim command As System.Data.SqlClient.SqlCommand = Me.CommandCollection(0)
Dim previousConnectionState As System.Data.ConnectionState = command.Connection.State
If ((command.Connection.State And System.Data.ConnectionState.Open) _
<> System.Data.ConnectionState.Open) Then
command.Connection.Open()
End If
Try
Using reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader
While reader.Read
list.Add(reader.GetInt32(0))
End While
End Using
Finally
If (previousConnectionState = System.Data.ConnectionState.Closed) Then
command.Connection.Close()
End If
End Try
Return list
End Function
End Class
End NameSpace
Maintenant, vous pouvez obtenir les user_roles ID est comme liste générique directement à partir du dataAdapter sans itérer deux fois (d'abord sur le remplissage de la datatable et second sur addind les ID à une liste).
Bien sûr, vous pouvez également utiliser cette approche de Datareader dans Page.Load sans utiliser de Dataset.
Question: Comment obtenez-vous l'information? L'extrayez-vous dans un DataSet ou l'insérez-vous dans un DataReader? – XstreamINsanity
Cher, est-il possible de me donner un exemple sur la façon de le faire en utilisant un DataReader. Je n'ai pas essayé cela, mais j'ai une exigence sur la même chose. –