2010-12-04 6 views
0

안녕하세요, 내가 선택한 파일 항목에서 데이터 항목을 삭제하려고 할 때 사용할 파일 경로 ID가 있으므로 문자열을 저장하려고합니다.C# 데이터 그리드 셀 추출

잘 모르겠습니다. 올바른 방법입니다.

내 서재는 다음과 같습니다.

| ID | UserNumber | 이름 | 성 | 현재 | imagePath |

.01 ... 454656 ......... 해리 .......... 포터 ......... 마법사 ... ftp : // 192.168.1.8/Jellyfish.jpg

내 datagrid에서 "선택 항목"을 삭제하려고 할 때도 내 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

편집을 tryed 답변

내가 WPF로 놀지 않았다고 말해서 유감스럽게 생각합니다. 질문에 대해서는 LIL 비트로 연주해야했습니다. WPF가 WinForms와 거의 비슷하다고 가정하고 질문에 대답했습니다.

그래서 여기에 대한 답 :

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

dataGrid1.SelectedItems

가 선택된 모든 행을 포함하는 배열입니다. 그래서 첫 번째 것을 원합니다. 사용자가 둘 이상의 행을 선택하지 않게하려면 SelectionModeSingle으로 설정하십시오.

먼저 SelectedItem을 DataRowView 유형으로 캐스팅 한 다음 해당 행의 열에 액세스 할 수 있습니다.

죄송합니다 늦게 왔으며이 도움이 :)

+0

여전히 오류가 발생합니다. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : 색인 –

+0

업데이트 된 답변 @Garrith를 확인하십시오 :) –

0

귀하의 "selectedItems를 [6]"범위를 벗어 바랍니다. 배열에서 "0"이 아니라 "1"이 아닌 것을 기억하십시오.

문자열 imagePath = dataGrid1.SelectedItems [5] .ToString();

해야합니다.