2012-04-17 2 views
0

데이터 테이블의 내용을 문자열로 변환하는 중입니다. 데이터 세트에 12 행과 8 열이 있다고 가정 해보십시오. 결국 Dict에는 12 개의 행이나 96 개의 열이 포함됩니다. 아래 코드에 무엇이 잘못 되었나요? 행을 어떻게 재설정합니까?DataRow의 루프 DataColumn

티아.

 Dim ds As DataSet = ClsDB.GetDataSet(sql) 

    If Not ds Is Nothing AndAlso ds.Tables.Count > 0 Then 
     Dim row As New List(Of KeyValuePair(Of String, String)) 
     Dim dict As New List(Of KeyValuePair(Of Integer, Object)) 
     Dim dt As DataTable = ds.Tables(0) 
     Dim i As Integer = 0 

     For Each dr As DataRow In dt.Rows 
      For Each dc As DataColumn In dt.Columns 
       row.Add(New KeyValuePair(Of String, String)(dc.ColumnName, IIf(Not IsDBNull(dr.Item(dc.ColumnName)), dr.Item(dc.ColumnName), ""))) 
      Next 
      dict.Add(New KeyValuePair(Of Integer, Object)(i, row)) 
      i += i 
     Next 

     Return New JavaScriptSerializer().Serialize(dict) 
    Else 
     Return "No Data" 
    End If 
+0

'dr'마다 '행'을 다시 초기화해야합니까? – Jodrell

+0

예, 무엇이 간단한 부주의합니다. 너무 많은 것을 생각하십시오. – Gian

답변

3

당신은 실제로 당신이 dr 루프 외부 row를 선언 할 필요가 없다, 모든 dr에 대한 row을 재 초기화해야한다.

For Each dr As DataRow In dt.Rows 
    Dim row As New List(Of KeyValuePair(Of String, String)) // <<-   
    For Each dc As DataColumn In dt.Columns     
     row.Add(... 
    Next    
    dict.Add(... 
Next 
관련 문제