C # DataGrid извлечение клеток - PullRequest
       0

C # DataGrid извлечение клеток

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

Эй, я пытаюсь сохранить строку из выбранного элемента в сетке данных, так как у него есть идентификатор пути к файлу, который используется для удаления.

Не уверен, что я поступаю правильно.

мои колонки выглядят так

| ID | UserNumber | FirstName | Фамилия | Текущий | imagePath |

.. 01 ... 454656 ......... Гарри Поттер .......... ......... Мастер .... FTP: //192.168 .1.8 / Jellyfish.jpg

я пытаюсь "на выбор" в моей сетке данных, когда я удаляю, я также удаляю с моего FTP-сервера. Мне нужна информация, хранящаяся в столбце imagePath, чтобы я мог затем удалить 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();

Не повезло :( Думал, у меня это почти получилось !!

Ответы [ 2 ]

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

Отредактированный ответ

Извините, что сказал, что я не играл с WPF, так что из-за вашего вопроса мне пришлось немного поиграть с ним :) Я ответил на ваш вопрос в предположении WPFбудет почти похож на WinForms.

Так вот ответ :)

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

dataGrid1.SelectedItems - это массив, содержащий ВСЕ выбранные строки.Итак, вы хотите первый из них.Если вы не хотите, чтобы ваш пользователь выбирал более одной строки, установите SelectionMode на Single.

Сначала вы приводите SelectedItem к типу DataRowView, а затем можете использовать его для доступа к вашемустолбцы этой конкретной строки.

Извините за опоздание и надеюсь, что это поможет:)

0 голосов
/ 09 декабря 2010

Ваш "SelectedItems [6]" находится вне диапазона. Помните, что вы начинаете с «0», а не с «1» в массивах.

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

должно работать.

...