none
effacer une entré sqlce RRS feed

  • Question

  • Bonjour a tous,

    J'ai un problème d'effacement d'entré dans une application wp 7.1.

    J'affiche les entrées d'une table sqlce dans une listbox aux moyen de liste et je veut pouvoir proposer a l'utilisateur de l'effacer au moyen d'un bouton.

    Le problème est qu'en cas d'appuis sur ce bouton, c'est la première liste afficher dans la listbox qui est effacer mais pas celle qui est sélectionner.

    Voila mon code:

    Preparation de la liste a afficher dans la listbox:

    Le C#:

    var Liste1 = from TABLE1 t in MYDB.TABLE1s
             where t.Nom == nomObjet
             orderby t.Date descending
             select t;    
         this.Listbox1.ItemsSource = Liste1;
        
     Le xaml:
     
         <ListBox x:Name="Listbox1" ScrollViewer.VerticalScrollBarVisibility="Hidden" Height="671"  >
          <ListBox.ItemTemplate>
           <DataTemplate>
                                    <StackPanel Orientation="Vertical" Background="#d23438" Margin="0,10,0,10" Width="440">
             <TextBlock Text="{Binding Item1}"  FontSize="30" TextWrapping="Wrap" HorizontalAlignment="Left"   Width="Auto" Margin="10,10,10,10" VerticalAlignment="Stretch" />
             <TextBlock Text="{Binding item2}"  FontSize="30" TextWrapping="Wrap" HorizontalAlignment="Left"   Width="Auto" Margin="10,10,10,0" VerticalAlignment="Stretch" />
             <TextBlock Text="{Binding item3}"  FontSize="30" TextWrapping="Wrap" HorizontalAlignment="Left"   Width="Auto" Margin="10,10,10,0" VerticalAlignment="Stretch" />
             <TextBlock Text="{Binding item4}"  FontSize="30" TextWrapping="Wrap" HorizontalAlignment="Left" Width="Auto" Margin="10,10,10,10" VerticalAlignment="Stretch"    />
             <telerikPrimitives:RadImageButton ButtonShape="Image" ButtonType="Custom" RestStateImageSource="/Images/check/deletevert.png" PressedStateImageSource="/Images/check/deleterouge.png" Click="Click_delete"  HorizontalAlignment="Left" Foreground="{x:Null}" VerticalAlignment="Bottom"/>
            </StackPanel>
           </DataTemplate>
          </ListBox.ItemTemplate>
         </ListBox>
         
    Le click pour supprimer:

    private void Click_delete(object sender, RoutedEventArgs e)
      {
       IQueryable<TABLE1> table1query = from t in MYDB.TABLE1s where t.Nom == nomObjet select t;
       TABLE1 table1ToDelete = table1query.FirstOrDefault();
       MYDB.TABLE1s.DeleteOnSubmit(table1ToDelete);
       MYDB.SubmitChanges();
       var Liste1 = from TABLE1 t in MYDB.TABLE1s
             where t.Nom == nomObjet
             orderby t.Date descending
             select t;    
         this.Listbox1.ItemsSource = Liste1;
      }

    Merci de votre aide
    Patrice


    • Modifié pbaranx mardi 27 août 2013 07:23
    mardi 27 août 2013 07:11

Réponses

  • Mais avec ton table1query.FirstOrDefault(); dans ta méthode Click_Delete(), c'est normal que c'est le premier qui soit supprimé.

    Il faut que tu identifies "le" record à supprimer

    Par exemple tu mets dans la propriété Tag="" de ton DataTemplate  l'ID du record. Puis tu récupères ce dernier dans dans ta méthode Click_Delete()


    Christophe


    mardi 27 août 2013 07:27

Toutes les réponses

  • Mais avec ton table1query.FirstOrDefault(); dans ta méthode Click_Delete(), c'est normal que c'est le premier qui soit supprimé.

    Il faut que tu identifies "le" record à supprimer

    Par exemple tu mets dans la propriété Tag="" de ton DataTemplate  l'ID du record. Puis tu récupères ce dernier dans dans ta méthode Click_Delete()


    Christophe


    mardi 27 août 2013 07:27
  • Merci de ta reponse Christophe, ca marche :)

    Patrice

    mardi 27 août 2013 07:37
  • pour récupérer l'objet dans la méthode j'utilise ce genre de méthode (bon passé par le VisualTreeHelper est un peu, disons,  pas trop orthodoxe  :)

    private void Click_delete(object sender, RoutedEventArgs e)
    {
    	var menuItem = sender as MenuItem;
    	var vth = VisualTreeHelper.GetParent(menuItem) as FrameworkElement;
    	MonObjet obj = vth.DataContext as monItem;
    	
    	//exemple si 
    	Liste1.Remove(obj);
    				
    	//après ici ton code sqlce
    }


    Christophe http://www.peug.net http://www.sodeasoft.com

    • Proposé comme réponse ceriboo mardi 27 août 2013 09:36
    mardi 27 août 2013 07:39