Récupérer une image de Sql server dans un ListView

msi19 Messages postés 5 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 11 décembre 2013 - 11 déc. 2013 à 15:11
taibelamrani Messages postés 3 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 7 février 2014 - 28 janv. 2014 à 16:38
Bonjour,
Bonjour,je suis débutant en wpf et je suis sur un petit projet qui me pose énormément de problème.Le but est de d'enregistrer le nom(varchar) ,l'âge(int),l'image((varbinary) du fruit d'un arbre dans une base de données Sql Server Pour l'enregistrement j'ai réussi à le faire mais le problème se trouve au niveau dans la récupération des données dans un ListView. Mise à part les autres données seule l'image ne s'affiche pas dans la ListView.

Mon programme se présente ainsi :

english:
Hello, I am a beginner in wpf and I'm on a project that asks me a lot of problem.The goal is to register the name (varchar), age (int), image ((varbinary) fruit a tree in a database Sql Server data to the recording I managed to do it but the problem lies in the recovery of data in a ListView. aside from other data only image s do not appear in the ListView.

My program is as follows:

XAML

<ListView x:Name="listDonne" HorizontalAlignment="Left" Height="246" Margin="20,371,0,0" VerticalAlignment="Top" Width="358" Cursor="Hand">
<ListView.View>
<GridView>

<GridViewColumn Header="ID">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}" Margin="30,0,0,0" HorizontalAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

<GridViewColumn Header="NOM">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Nom}" Margin="30,0,0,0" HorizontalAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
................

<GridViewColumn Header="FRUIT">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding image}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
.................

</GridView>



</ListView.View>
</ListView>



CLASS

public class Arbre
{
public int ID { get; set; }
public string Nom { get; set; }
public int Age { get; set; }
public BitmapImage image { get; set; }
public string Desc { get; set; }
public string Comes { get; set; }

}


CODE BEHIND

public partial class TestWindow1 : Window
{
OpenFileDialog fd = new OpenFileDialog();
List<Arbre> arbre = new List<Arbre>();
Convertisseur cnt = new Convertisseur();
public TestWindow1()
{
InitializeComponent();
LordData();
}

//recuperation des données
void LordData()
{

try
{
using (SqlConnection cnx = new SqlConnection(Properties.Settings.Default.ChaineDeConnxion))
{
cnx.Open();
byte[] im = null;
ListViewItem list = new ListViewItem();
using (SqlCommand cmd = new SqlCommand("select *from Arbres", cnx))
{
SqlDataReader rd = cmd.ExecuteReader();

while (rd.Read())
{

arbre.Add(new Arbre() { ID = Convert.ToInt32(rd[0]), Nom = rd[1].ToString(), Age = Convert.ToInt32(rd[2]), image =new BitmapImage(new Uri( Convert.ToString(rd[3]))), Desc = rd[4].ToString(), Comes = rd[5].ToString() });

}

//remplissage de ma ListView
listDonne.ItemsSource = arbre;
rd.Close();
}

cnx.Close();
}
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}

}




Aidez-moi je suis coincé!

1 réponse

taibelamrani Messages postés 3 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 7 février 2014
28 janv. 2014 à 16:38
Salut ,
tu pourra tester ça :

//recuperation des données
void LordData()
{

try
{
using (SqlConnection cnx = new SqlConnection(Properties.Settings.Default.ChaineDeConnxion))
{
cnx.Open();


using (SqlCommand cmd = new SqlCommand("select *from Arbres", cnx))
{
SqlDataReader rd = cmd.ExecuteReader();

while (rd.Read())
{

byte[] im = (byte[])(rd[3]);
var memoFichier = new MemoryStream(im);
var bitmapImg = new BitmapImage();
bitmapImg.BeginInit();
bitmapImg.StreamSource = memoFichier;
bitmapImg.EndInit();
arbre.Add(new Arbre() { ID = Convert.ToInt32(rd[0]), Nom = rd[1].ToString(), Age = Convert.ToInt32(rd[2]), image =bitmapImg, Desc = rd[4].ToString(), Comes = rd[5].ToString() });

}
listDonne.ItemsSource = arbre;

rd.Close();
}

cnx.Close();
}
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}

}
0
Rejoignez-nous