2010-12-04 10 views
0

削除するのに使うファイルパスのIDを持つので、選択したアイテムの文字列をデータグリッドに保存しようとしています。c#datagridセルの抽出

わからないことは正しいことです。

私の列はこのように見えます

| ID |ユーザー番号|ファーストネーム|姓現在の| imagePath |

..01 ... 454656 .........ハリー..........ポッター.........ウィザード... .... ftp:// 192.168.1.8/Jellyfish.jpg

私のデータグリッドで「選択」をしようとすると、私は自分のFTPサーバからも削除します。 imagePath coloumの下に保存されている情報が必要なので、私は自分の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(); 
} 

} 

} 

エラー私が取得:

インデックスが範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

この行には:

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

アイブ氏はまた、

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

運:(思想は、私はほとんどそれを持っていた!!

答えて

1

編集をしようと試み回答

私はWPFで遊んでいないことを伝えて申し訳ありません。ちょうどあなたの質問のために私はそれをリールビットで遊ばなければならなかった:私はWPFがWinFormsに似ていると仮定してあなたの質問に答えました。だからここ

が答えです:)

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

dataGrid1.SelectedItemsが選択されているすべての行を含む配列です。それで最初のものが必要です。ユーザーが複数の行を選択しないようにするには、SelectionModeSingleに設定します。

まず、SelectedItemをDataRowView型にキャストし、それを使用してその特定の行の列にアクセスします。

遅くなって、これが役に立てば幸い:)

+0

まだエラーが表示されません。インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。 パラメータ名:index –

+0

最新の回答、@Garrithを確認してください:) –

0

あなたの "selectedItemsの[6]" の範囲外であるため申し訳ありません。配列では "0"で始まって "1"ではないことに注意してください。

文字列imagePath = dataGrid1.SelectedItems [5] .ToString();

が有効です。

関連する問題