2012-09-09 3 views
0

다음은 GridViewRow에서 Visual Basic의 godforsaken 언어를 사용하여 DataRow 개체로 값을 가져 오는 데 사용하려는 루프입니다. 그러나,이 라인 :Visual Basic의 DataRow에 GridViewRow 데이터 가져 오기

   dr(i) = r.Cells(i).Text 

나는 다음과 같은 오류 메시지가 계속 :

the value of type string cannot be converted to system.data.datarow 

누군가가이 작업을 수행하는 방법에 대한 올바른 방향으로 날 지점 수를?

 Dim rows As New List(Of GridViewRow)() 

     For Each item As GridViewRow In grdExpProd.Rows 
      rows.Add(item) 
     Next 

     Dim value As Integer = rows.Count 

     Dim dt As New DataTable() 


     For index As Integer = value - 1 To 0 Step -1 
      Dim dr As DataRow() 
      Dim r As GridViewRow = rows(index) 

      For i As Integer = 0 To r.Cells.Count - 1 
       dr(i) = r.Cells(i).Text 
      Next 

      dt.Rows.Add(dr) 
     Next 

답변

1

DataRows Item Property에 텍스트를 추가해야 DataRow의 개별 셀에 액세스 할 수 있습니다. 또한 GridRowView에있는 열을 새로운 DataTable에 추가해야 할 필요가 있습니다.

For i = 1 To rows(0).Cells.Count 
    dt.Columns.Add("Header" & i) 
Next 

For index As Integer = value - 1 To 0 Step -1 
    Dim dr As DataRow = dt.NewRow() 
    Dim r As GridViewRow = rows(index) 

    For i As Integer = 0 To r.Cells.Count 
     dr.Item(i) = r.Cells(i).Text 
    Next 

    dt.Rows.Add(dr) 
Next 
+0

아이템 속성 y는 인덱서로 취급되어야하므로 이름으로 참조 할 필요가 없습니다. dr (i)는 충분해야한다. – ekolis

+0

당신이 맞다. GridViewRow 's Columns와 유사하다는 것을 분명히했다. –

0

실수로 dr을 단일 DataRow 개체가 아닌 DataRow 개체의 배열로 만들었습니다. 또 다른 포스터는 지적, 당신은 당신의 데이터 열을 생성해야, 또한

Dim dr As DataRow = dt.NewRow() 

Dim dr As DataRow() 

를 교체하십시오

Dim dr As New DataRow() 
+0

그러나 Dr가 "Protected.Friend '이므로이 오류가 발생하지 않는다고 말하면서 새로운 오류가 발생합니다. – NealR

+0

흠. 방금 데이터 행 변수를 방금 전에 로컬 변수 또는 생성자에 대해 이야기하고 있습니까? dt.NewRow()를 사용하여 제안 된 또 다른 포스터는 아마도 실제로 데이터 행을 만드는 방법 일 것입니다. – ekolis

0

Dim dr As DataRow() 

를 교체하십시오 전에 테이블 행을 추가하려고합니다.

+0

이렇게하면 코드가 컴파일 될 수 있지만이 줄은 dr (i) = r.Cells (i) .Text 루프의 첫 번째 반복 중에 오류가 throw됩니다 .Dr에 대한 인덱스 0에서 열을 찾을 수 없습니다.이 문제를 해결하는 방법에 대한 아이디어?이 갈 방법입니다 (희망) – NealR

+0

@NealR 아, 알겠습니다. 테이블에 열이 없습니다! 따라서 행에 항목이 없습니다. 새 행을 만들기 전에 DataTable Columns 컬렉션에 DataColumn 개체를 추가해야합니다. –