2010-12-04 75 views
0

嗨即时通讯尝试存储从数据网格中选定的项目的字符串,因为它有一个文件路径ID喜欢用于删除。c#datagrid单元格提取

不知道我会以正确的方式去做。

我的柱子看起来像这样

| ID | UserNumber |名字|姓氏|当前| 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();

香港专业教育学院还tryed

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是包含所有被选择的行的数组。所以你想要它的第一个。如果您不希望用户选择多行,请将SelectionMode设置为Single

您首先将SelectedItem转换为DataRowView类型,然后可以使用它来访问该特定行的列。

对不起,我迟到了,希望这有助于:)

+0

还没有得到错误:索引超出范围。必须是非负数且小于集合的大小。 参数名称:index – 2010-12-04 19:38:59

0

你 “SelectedItems [6]” 超出范围。记住你在数组中以“0”而不是“1”开始。

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

应该工作。