Meilleur auteur de réponses
Vider le contenu d'une DATAGRID en WPF

Question
-
Bonjour chers amis développeur;
Dans mon application (réalisé en WPF) j'ai un DataGrid est une toolbox, et je veux qu'a chaque fois que l'utilisateur clique sur un élément dans la toolbox, les caractéristiques de cet élément s'affichent dans le DataGrid!! j'arrive pas a vider le contenu du DataGrid pour pouvoir afficher les caractéristique du nouveau élément sélectionné !!!! j'ai essayé datagrid.items.cler() mais sa pose un probleme (losque je clique sur le premier élément ses caractéristique s'affichent mais lorsque je clique sur un deuxième élément au lieu de vider le datagrid et afficher les nouvelles caractéristiques il me lance une execption), j'ai essayer aussi datagrid.ItemsSources=null; mais sa fonctionne pas aussi (il vide pas le datagrid mais a chaque clique il ajoute les nouvelles caractéristique),
CODE SOURCE XAML
<DataGrid x:Name="Caracter" AutoGenerateColumns="False" CanUserResizeColumns="True" GridLinesVisibility="Vertical" HeadersVisibility="All" Background="White" RowBackground="LightCyan" AlternatingRowBackground="LightBlue" IsReadOnly="True" CanUserSortColumns="True" CanUserReorderColumns="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" SelectionMode="Extended" AreRowDetailsFrozen="True"> <DataGrid.Columns> <DataGridTemplateColumn Header="Name" Width="80" > <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Name_compo}" Width="60" TextWrapping="Wrap"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Model" Width="50"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Width="60" Text="{Binding Model_compo}" TextWrapping="Wrap"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Role" Width="130"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Role_compo}" TextWrapping="Wrap"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Description" Width="108"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Descrip_compo}" TextWrapping="Wrap"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>
CODE C#
// le id c le id de l'element selectionner void GETComposant(string id) { if(id!=null){ MessageBox.Show("JE suis le composant selectionner!:"+id); SqlConnection myConnection = new SqlConnection() try { myConnection.Open(); SqlCommand myCommand = new SqlCommand("SELECT *FROM [Component].[dbo].[PFE_Component] WHERE name_compo='" + id + "'", myConnection); SqlDataReader myReader = null; myReader = myCommand.ExecuteReader(); if (myReader.Read()) { string Name_compo,Model_compo,Role_compo,Descrip_compo; if(myReader["name_compo"] is System.DBNull) // si le nom de composant dans la base est vide { Name_compo="No name"; Model_compo=(string)myReader["model_compo"]; Role_compo = (string)myReader["role_compo"]; Descrip_compo = (string)myReader["descrip_compo"]; } else{ if(myReader["model_compo"] is System.DBNull) // si model de composant est null { Model_compo="No model"; Name_compo = (string)myReader["name_compo"]; Role_compo = (string)myReader["role_compo"]; Descrip_compo = (string)myReader["descrip_compo"]; }else{ if(myReader["role_compo"] is System.DBNull)// si le role de composant est null { Role_compo="No role"; Name_compo = (string)myReader["name_compo"]; Model_compo=(string)myReader["model_compo"]; Descrip_compo = (string)myReader["descrip_compo"]; } else{ if(myReader["descrip_compo"] is System.DBNull)// si la description est null { Descrip_compo="No description"; Name_compo = (string)myReader["name_compo"]; Model_compo=(string)myReader["model_compo"]; Role_compo = (string)myReader["role_compo"]; } else // si aucun champs n'est vide { Name_compo =(string)myReader["name_compo"]; Model_compo=(string)myReader["model_compo"]; Role_compo =(string)myReader["role_compo"]; Descrip_compo =(string)myReader["descrip_compo"]; } } } } compo.Add(new Component() { Name_compo=Name_compo, Model_compo=Model_compo, Role_compo=Role_compo, Descrip_compo=Descrip_compo }); Caracter.ItemsSource=null; Caracter.ItemsSource=compo; } } finally { myConnection.Close(); } }else{ MessageBox.Show("Vous n'avez selectionner aucun composant !!"); } } public class Component { public string Name_compo { get; set; } public string Model_compo { get; set; } public string Role_compo { get; set; } public string Descrip_compo { get; set; } }
- Déplacé Aurel Bera jeudi 29 mai 2014 06:37 WPF
Réponses
-
Bonjour
On a déplacé votre thread vers le forum dédié WPF.
Et pour vous répondre, si vous videz compo. On ne voit pas la définition de compo, mais le plus probable compo.Clear() vas fonctionner.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Marqué comme réponse MOUAICI jeudi 29 mai 2014 08:00
Toutes les réponses
-
Bonjour
On a déplacé votre thread vers le forum dédié WPF.
Et pour vous répondre, si vous videz compo. On ne voit pas la définition de compo, mais le plus probable compo.Clear() vas fonctionner.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.- Marqué comme réponse MOUAICI jeudi 29 mai 2014 08:00
-