[英]c# datagrid cell extraction
嘿,我试图将选定项目中的字符串存储在数据网格中,因为它具有要删除的文件路径ID。
不确定即时通讯是否以正确的方式进行。
我的柱子看起来像这样
| 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();
没运气:(以为我快吃了!!
编辑答案
不好意思告诉您我还没有使用WPF,所以仅出于您的问题,我不得不一点点:)我回答了您的问题,假设WPF与WinForms几乎相似。
所以这是答案:)
DataRowView dr = (DataRowView)(dataGrid1.SelectedItems[0]);
MessageBox.Show(dr.Row.ItemArray[5].ToString());
dataGrid1.SelectedItems
是一个包含所有选定行的数组。 因此,您需要第一个。 如果您不希望用户选择多于一行,请将SelectionMode
设置为Single
。
您首先将SelectedItem转换为DataRowView类型,然后可以使用它来访问该特定行的列。
很抱歉迟到了,希望对您有所帮助:)
您的“ SelectedItems [6]”超出范围。 请记住,在数组中,您以“ 0”开头,而不是以“ 1”开头。
字符串imagePath = dataGrid1.SelectedItems [5] .ToString();
应该管用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.