Индекс сетки данных C # был вне диапазона - PullRequest
0 голосов
/ 04 декабря 2010

продолжаю получать ошибку для этой строки:

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

Индекс был вне диапазона. Должен быть неотрицательным и меньшим, чем размер коллекции. Имя параметра: индекс

Попытка сохранить ячейку из моей таблицы данных в var / string (она содержит путь + имя файла), чтобы я мог удалить ее через ftp.

        private void button2_Click(object sender, RoutedEventArgs e)
    {
        var imagePath = dataGrid1.SelectedItems[5].ToString();
        Student selected = dataGrid1.SelectedItem as Student;
        if (selected == null)
            MessageBox.Show("You must select a student");
        else
        {
            if (MessageBoxResult.Yes == MessageBox.Show("Are you sure", "delete student",
                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();
    }

}

}

1 Ответ

1 голос
/ 04 декабря 2010

Я думаю, вы перепутали его между SelectedItems и SelectedItem - SelectedItems должен возвращать IEnumerable из выбранных элементов - похоже, вы пытаетесь получить доступ к столбцу SelectedItem.

Если у ученика есть ImagePath, вы можете немного переупорядочить его и просто получить:

Student selected = dataGrid1.SelectedItem as Student;
var imagePath = selected.ImagePath;
...