Bonsoir,
Comment puis je faire pour rafraîchir une listebox alimentée par une source de donnée, quand je supprime un élément de ma source de donnée ?
merci d'avance...
Bonsoir,
Comment puis je faire pour rafraîchir une listebox alimentée par une source de donnée, quand je supprime un élément de ma source de donnée ?
merci d'avance...
Salut,
peut etre qu'il faut récupérer et garder le TopIndex de ta liste (index du premier element visible quand tu supprime un élément de ta liste.
je t'invite à voir ce topic :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private void btnRemove_Click(object sender,EventArgs e) { int topIndex = listBox1.TopIndex; m_BindingList.Remove(ElementASupprimer); if(listBox1.Items.Count>topIndex) listBox1.TopIndex = topIndex; } // m_BindingList est la liste mappée à ta listBox
http://stackoverflow.com/questions/2...fresh-problems
Bonne courage
Quel est le type de ta DataSource ? Si c'est une DataTable ou une BindingList<T>, ça devrait se rafraichir automatiquement
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Alors je ne sais pas si c'est la bonne réponse mais c'est une ItemsSource="{ma source}"
Issue d'une BD SQL serveur 2008.
Et le refresh n'est pas auto.
Par contre quand je selectionne la ligne que j'ai "visiblement" supp de ma base, il me retour dans des champs espion des NULL (normal me direz vous)
Déjà ce serait utile de préciser la techno que tu utilises... Faute de précision, j'avais supposé que c'était Windows Forms, mais visiblement c'est WPF.
D'autre part, ça ne nous apprend rien du tout sur la nature de la source... Je suppose que ItemsSource est défini par un binding, mais un binding sur quoi ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok...
Je vais essayer de donner plus d'info. Je débute sur VS2010 (j'en fais depuis un mois).
Donc je passe par Expression Blend 4 et je récup en modification csharp sous VS2010.
ma base est sous SQL serveur 2008.
Mon projet se découpe comme suit : un projet Bibliothéque où je récup ma BD grace à LINQ to SQL
Un projet sous expression comme je l'ai dit, pour le design et en modification sous VS2010 avec un référence mon projet Biblio.
Pour récupérer les données j'instancie une class ObservableCollection de string où mon constructeur récup une liste de string issu d'une requete LINQ du projet Biblio.
Ensuite dans mon XAML de l'écran, la listebox recoit par ItemsSource ma liste de donnée (cf l'exemple : http://msdn.microsoft.com/fr-fr/libr...95).aspx#Y2466)
J'espère que ça peut vous aider à comprendre ma mise en oeuvre (et d'ailleur au passage si vous trouvez que c'est trop lourd comme mise en forme je suis preneur d'info)
Bah si tu supprimes un élément de la ObservableCollection, l'affichage sera bien mis à jour... Par contre si tu supprimes simplement la ligne de la BDD sans mettre à jour la ObservableCollection, la ListBox n'a aucun moyen de savoir qu'un élément a été supprimé...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok, donc Comment je fais pour mettre à jour ma collection? je la refais?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Mais comment je fais pour toucher à la collection qui est créée par un constructeur lui même appelé dans du XAML?
Je n'ai pas la main dessus?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok, je te le poste ce soir. Je ne l'ai pas sous la main au taf.
Merci pour l'intérêt que tu portes à me répondre![]()
Donc en XAML j'ai sur ma fenetre :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Window.Resources> <local:MaListe x:Key="Maliste"/> </Window.Resources> <ListBox ... ItemsSource="{StaticResource MaListe}" ... />
Et dans mon csharp :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 namespace WPF1 { class MaListe : OsbservaleCollection<string> { public MaListe() { List<string> list_DATA = new List<string> DBDataClasses db = new DBDataClasses(); list_DATA = dataTrucDATA.lire_TrucDB(db); foreach(string s in list_DATA) { Add(s); } } } }
Voilà mon code (dsl pour la mise en forme).
Qu'en penses tu?
Tu ne devrais pas faire comme ça... instancier à partir du XAML un truc qui va accéder à la BDD, c'est pas très propre. Un des gros avantages de WPF est qu'on peut facilement séparer le code métier du code de l'interface graphique, notamment grâce au pattern MVVM.
Il vaudrait mieux que tu crées la liste manuellement en code (dans le code-behind ou dans le ViewModel si tu utilises le pattern MVVM), et que tu l'affectes au ItemsSource de ta ListBox (explicitement ou via un binding). Comme ça tu pourras facilement la recréer.
Il y a les balises CODE pour ça
(je les ai ajoutées dans ton message)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
C'est bizarre que tu me dises que c'est pas propre car je l'ai 'pompé' de la MSDN...
Mais je vois ce que tu veux dire. Je vais essayer ce soir et si ça marche je tag en résolu.
Merci pour le balisage et merci d'avoir prit le temps de répondre
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Oui, voilà le lien : http://msdn.microsoft.com/fr-fr/libr...95).aspx#Y2466
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Tu peux le retrouver dans mon poste d'hier à 16h33 lui fonctionne
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager