2010-12-04 13 views
0

Hey j'essaie de stocker une chaîne à partir d'un élément sélectionné dans une grille de données, car elle a un ID de chemin de fichier à utiliser pour supprimer.C# extraction de cellule de datagrid

Je ne suis pas sûr d'y aller de la bonne façon. Mes colonnes ressemblent à ceci

| ID | UserNumber | Prénom | LastName | Actuel | imagePath |

..01 ... 454656 ......... Harry .......... Potter ......... Assistant .... ftp: // 192.168.1.8/Jellyfish.jpg

En essayant de "sur la sélection" dans mon datagrid quand je supprime je supprime aussi de mon serveur ftp. J'ai besoin des informations stockées sous imagePath coloum pour pouvoir ensuite faire ma suppression ftp.

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    string imagePath = dataGrid1.SelectedItems.ToString(); 
    Student selected = dataGrid1.SelectedItem as Stu; 
    if (selected == null) 
     MessageBox.Show("You must select a user"); 
    else 
    { 
     if (MessageBoxResult.Yes == MessageBox.Show("Are you sure", "delete user", 
      MessageBoxButton.YesNo, MessageBoxImage.Warning)) 
     { 
      FTPdelete(imagePath, "Administrator", "commando"); 
      Class1.DeleteStudent(selected); 
      Window_Loaded(null, null); 
     } 
    } 
} 
private void FTPdelete(String imagePath, String inUsername, String inPassword) 
{ 
    var req = (FtpWebRequest)WebRequest.Create(imagePath); 
    req.Proxy = null; 
    req.Credentials = new NetworkCredential(inUsername, inPassword); 

    req.Method = WebRequestMethods.Ftp.DeleteFile; 

    req.GetResponse().Close(); 
} 

} 

} 

l'erreur que je reçois:

index était hors de portée. Doit être non négatif et inférieur à la taille de la collection. Nom de paramètre: index

sur cette ligne:

string imagePath = dataGrid1.SelectedItems[6].ToString();

Ive aussi tryed

var imagePath = dataGrid1.SelectedItems[6].ToString();

Pas de chance :(Je pensais que je l'avait presque !!

Répondre

1

Edité Réponse

Désolé de vous dire que je n'ai pas joué avec WPF, donc juste pour votre question je devais jouer avec un petit peu :) J'ai répondu à votre question en supposant que WPF serait presque similaire à WinForms.

Voici donc la réponse :)

DataRowView dr = (DataRowView)(dataGrid1.SelectedItems[0]); 
MessageBox.Show(dr.Row.ItemArray[5].ToString()); 

dataGrid1.SelectedItems est un tableau qui contient toutes les lignes sélectionnées. Donc vous voulez le premier. Si vous ne souhaitez pas que votre utilisateur sélectionne plusieurs lignes, définissez SelectionMode sur Single.

Vous devez d'abord convertir l'élément SelectedItem en type DataRowView, puis vous pouvez l'utiliser pour accéder à vos colonnes de cette ligne particulière.

Désolé pour été en retard et nous espérons que cela aide :)

+0

L'erreur n'est toujours pas présente: Index était hors de portée. Doit être non négatif et inférieur à la taille de la collection. Nom du paramètre: index –

+0

Veuillez vérifier la réponse mise à jour, @Garrith :) –

0

Votre "SelectedItems [6]" est hors de portée. Rappelez-vous que vous commencez par "0" et non "1" dans les tableaux.

chaîne imagePath = dataGrid1.SelectedItems [5] .ToString();

devrait fonctionner.