Question [Résolu] Base de données dans une ListView

Plus d'informations
il y a 8 ans 8 mois #24188 par Riblito
............. :lol:

Re bonjour


Toujours sur mon script, j'ai décidé de passer mes listbox en listview ... plus propre je pense ....
j'ai jamais fais de listviews.
J'ai donc trouvé comment rentrer des choses dans la listview, mais en ligne ....mais je trouve pas comment rentrer des données en colonne .... ( données qui viennent de ma base de données SQL.

Pour ma listbox j'avais utilisé cela :

[code:1][void][system.reflection.assembly]::LoadWithPartialName(\"Mysql.Data\"«»)
$connstr = \"server=localhost;uid=root;password=5693;database=info_isec;port=3306\"
$ObjMysql = New-Object Mysql.Data.Mysqlclient.Mysqlconnection
$ObjMysql.ConnectionString = $connstr
$ObjMysql.open()
$req = \"select * from t_locaux\"
$Sqlcommand = new-object Mysql.data.mysqlclient.mysqlcommand($req,$ObjMysql)
$mysqlAdapt = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Sqlcommand)
$mysqldataset = new-object System.Data.DataSet
$recordcount = $mysqlAdapt.fill($mysqldataset, \"data\"«»)
$collection = $mysqldataset.tables[0].cli_Nom_loc
$collection3 = $mysqldataset.tables[0].cli_Bat_loc

$listboxloList.Items.AddRange($collection)[/code:1]

Et donc j'ai bien essayé plusieurs façon différentes, mais je me retrouve avec des erreurs, ou alors des 0 partout.

J'y suis depuis se matin 7h et la je commence à sécher :lol: .....

Si vous aviez une idée... voici un exemple de ma base de donnée <br><br>Message édité par: Arnaud, à: 12/09/17 22:46

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 8 mois #24196 par Philippe
a tu regarder avec ce super tuto en Français de mickyballadelli

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 8 mois #24197 par Philippe
pour résume il te faut faire ceci, a toi d'adapter les paramètres de taille et forme de la listview :

[code:1]
$list = New-Object System.Windows.Forms.ListView
$list.TabIndex = 3
$list.Location = New-Object System.Drawing.Point(3,30)
$list.Size = New-Object System.Drawing.Size(605, 382)
$list.View = \&quot;Details\&quot;
$list.GridLines = $true
$list.FullRowSelect = $true
$list.AllowColumnReorder = $true
$list.Scrollable = $true
$list.Sorting ='None'
$list.add_ColumnClick({SortList $_.Column})

[void][system.reflection.assembly]::LoadWithPartialName(\&quot;Mysql.Data\&quot;«»)
$connstr = \&quot;server=localhost;uid=root;password=5693;database=info_isec;port=3306\&quot;
$ObjMysql = New-Object Mysql.Data.Mysqlclient.Mysqlconnection
$ObjMysql.ConnectionString = $connstr
$ObjMysql.open()
$req = \&quot;select * from t_locaux\&quot;
$Sqlcommand = new-object Mysql.data.mysqlclient.mysqlcommand($req,$ObjMysql)
$mysqlAdapt = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Sqlcommand)
$mysqldataset = new-object System.Data.DataSet
$recordcount = $mysqlAdapt.fill($mysqldataset, \&quot;data\&quot;«»)

$list.BeginUpdate()
$list.items.Clear()
foreach ($ligne in $mysqldataset.tables[0])
{
$item = New-Object System.Windows.Forms.ListViewItem($ligne.cli_Nom_loc)
[Void]$item.SubItems.Add($ligne.cli_Bat_loc)
[Void] $list.Items.Add($item)
}
$list.EndUpdate()

[/code:1]

edit : rajout de la ligne [Void] $list.Items.Add($item)<br><br>Message édité par: 6ratgus, à: 7/09/17 12:49

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 8 mois #24198 par Riblito
merci pour la réponse :laugh:

Oui j'ai déjà lu le tuto ! mais j'ai déjà essayé plusieurs façon de faire sans résultat ...

La tienne non plus ne fonctionne pas. Mais j'ai du encore rater un truc.... Je dois finir le script dans une semaine, et j'en fais trop ... j'en deviens fou :laugh:

[code:1]$list = New-Object System.Windows.Forms.ListView
$list.TabIndex = 3
$list.Location = New-Object System.Drawing.Point(400,30)
$list.Size = New-Object System.Drawing.Size(360, 320)
$list.View = \&quot;Details\&quot;
$list.GridLines = $true
$list.FullRowSelect = $true
$list.AllowColumnReorder = $true
$list.Scrollable = $true
$list.Sorting ='None'

$tag = New-Object -TypeName PSCustomObject -Property @{
sortOrder = [System.Windows.Forms.SortOrder]::Ascending
}

$col = $list.Columns.Add(\&quot;ID\&quot;, 60)
$col.Tag = $tag
$col = $list.Columns.Add(\&quot;Nom\&quot;, 110)
$col.Tag = $tag
$col = $list.Columns.Add(\&quot;Batiment\&quot;, 110)
$col.Tag = $tag

[void][system.reflection.assembly]::LoadWithPartialName(\&quot;Mysql.Data\&quot;«»)
$connstr = \&quot;server=localhost;uid=root;password=5693;database=info_isec;port=3306\&quot;
$ObjMysql = New-Object Mysql.Data.Mysqlclient.Mysqlconnection
$ObjMysql.ConnectionString = $connstr
$ObjMysql.open()
$req = \&quot;select * from t_locaux\&quot;
$Sqlcommand = new-object Mysql.data.mysqlclient.mysqlcommand($req,$ObjMysql)
$mysqlAdapt = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Sqlcommand)
$mysqldataset = new-object System.Data.DataSet
$recordcount = $mysqlAdapt.fill($mysqldataset, \&quot;data\&quot;«»)

$list.BeginUpdate()
$list.items.Clear()
foreach ($ligne in $mysqldataset.tables[0])
{
$item = New-Object System.Windows.Forms.ListViewItem($ligne.cli_Nom_loc)
[Void]$item.SubItems.Add($ligne.cli_Bat_loc)
}
$list.EndUpdate()[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 8 mois #24199 par Philippe
a tu un message d'erreur ?
et peut tu me donner le premier message d'erreur ?

pour info dans cette partie les ligne avec TAG ne sert que pour les trie par colonne
et il te manque la fonction sortlist et le add_ColumnClick pour faire fonctionner le trie

[code:1]$tag = New-Object -TypeName PSCustomObject -Property @{
sortOrder = [System.Windows.Forms.SortOrder]::Ascending
}

$col = $list.Columns.Add(\&quot;ID\&quot;, 60)
$col.Tag = $tag
$col = $list.Columns.Add(\&quot;Nom\&quot;, 110)
$col.Tag = $tag
$col = $list.Columns.Add(\&quot;Batiment\&quot;, 110)
$col.Tag = $tag
[/code:1]

refait un essai que avec les add :
[code:1]$col = $list.Columns.Add(\&quot;ID\&quot;, 60)
$col = $list.Columns.Add(\&quot;Nom\&quot;, 110)
$col = $list.Columns.Add(\&quot;Batiment\&quot;, 110)
[/code:1]
autre modif : il faut rajouter une ligne dans la boucle comme ceci :
[code:1]$list.BeginUpdate()
$list.items.Clear()
foreach ($ligne in $mysqldataset.tables[0])
{
$item = New-Object System.Windows.Forms.ListViewItem($ligne.cli_Nom_loc)
[Void]$item.SubItems.Add($ligne.cli_Bat_loc)
[Void] $list.Items.Add($item)
}
$list.EndUpdate()
[/code:1]<br><br>Message édité par: 6ratgus, à: 7/09/17 12:48

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 8 mois #24200 par Riblito
[code:1]Impossible de convertir l'argument «item» (valeur «») de «Add» en type «System.Windows.Forms.ListViewItem+ListViewSubItem»: «Impossible de convertir la valeur «» en type «System.Windows.Forms.ListViewItem+ListViewSubItem». Erreur: «Cast non valide de
'System.DBNull' en 'System.Windows.Forms.ListViewItem+ListViewSubItem'.»»
Au caractère G:\profil\Desktop\evolution.ps1:325 : 9
+ [Void]$item.SubItems.Add($ligne.cli_Bat_loc)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument[/code:1]


cela indique la ligne :

Void]$item.SubItems.Add($ligne.cli_Bat_loc)<br><br>Message édité par: elemremy, à: 7/09/17 13:06

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.050 secondes
Propulsé par Kunena