2017-05-31 59 views
0

我有此JSONArray表示3條記錄迭代通過的webmethod JSON陣列用vb.net

{"Data":[{"RecID":2383,"PrtStatus":true},{"RecID":3387,"PrtStatus":true},{"RecID":3388,"PrtStatus":true}]} 

和我米試圖來遍歷它的對象。我內置了下面的類爲它

Public Class TblRegJoindata 
    Dim p_RecID As Integer 
    Dim p_status As Boolean 

    Public Property RecID As Integer 
     Get 
      Return p_RecID 
     End Get 
     Set(ByVal value As Integer) 
      p_RecID = value 
     End Set 
    End Property 

    Public Property PrtStatus As Boolean 
     Get 
      Return p_status 
     End Get 
     Set(ByVal value As Boolean) 
      p_status = value 
     End Set 
    End Property 
End Class 

在我的網站我的方法可以訪問數據,但通過他們不能想出一個辦法來循環,並將其儲存

<WebMethod> _ 
 
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata)) 
 
    Dim x As Integer = Data(0).RecID 
 
End Function

我試圖做的是這樣的事情,我試圖實現它,但不允許使用「長度」屬性

For i As Integer = 0 To Data.Length - 1 
    cmd.Parameters.Clear() 
    cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(i) 
    cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse((i)) 
    cmd.ExecuteNonQuery() 
Next 

更新

<WebMethod> _ 
 
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata)) 
 
    Dim constr As String = ConfigurationManager.ConnectionStrings("ARTSQLConStrng").ConnectionString 
 
    Using con As New SqlConnection(constr) 
 
     Using cmd As New SqlCommand("TblRegjoinUpdRec", con) 
 
      cmd.CommandType = CommandType.StoredProcedure 
 
      con.Open() 
 
      For i As Integer = 0 To Data.Count - 1 
 
       cmd.Parameters.Clear() 
 
       cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(Data(i).RecID) 
 
       cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse(Data(i).PrtStatus) 
 
       cmd.ExecuteNonQuery() 
 
      Next 
 
      con.Close() 
 
     End Using 
 
    End Using 
 
    Return (Data.Count)

返回data.count只是用於測試目的

+1

您需要使用計數屬性而不是長度。 'Data.Count'。 –

+0

@Chetan Ranpariya ,,,我試過這個測試,,,公共函數TblRegJoinUpd3(BYVAL數據爲列表(的TblRegJoindata)) 對於我作爲Integer = 0到Data.Count - 1 返回數據(i).PrtStatus Next End Function ,,,,,我只得到第一個值而不是三個,,, – JSON

+1

您是否調試過並檢查Data的數量是多少?循環執行3次?你可以更新你的代碼在問題和expalin什麼不工作,以及如何不工作?預計如何工作? –

回答

0

由於Chetan Ranpariya 整個工作的解決方案是低於

Public Class TblRegJoindata 
 
Dim p_RecID As Integer 
 
Dim p_status As Boolean 
 

 
Public Property RecID As Integer 
 
    Get 
 
     Return p_RecID 
 
    End Get 
 
    Set(ByVal value As Integer) 
 
     p_RecID = value 
 
    End Set 
 
End Property 
 

 
Public Property PrtStatus As Boolean 
 
    Get 
 
     Return p_status 
 
    End Get 
 
    Set(ByVal value As Boolean) 
 
     p_status = value 
 
    End Set 
 
End Property 
 
End Class 
 

 
<WebMethod> _ 
 
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata)) 
 
    Dim constr As String = ConfigurationManager.ConnectionStrings("ARTSQLConStrng").ConnectionString 
 
    Using con As New SqlConnection(constr) 
 
     Using cmd As New SqlCommand("TblRegjoinUpdRec", con) 
 
      cmd.CommandType = CommandType.StoredProcedure 
 
      con.Open() 
 
      For i As Integer = 0 To Data.Count - 1 
 
       cmd.Parameters.Clear() 
 
       cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(Data(i).RecID) 
 
       cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse(Data(i).PrtStatus) 
 
       cmd.ExecuteNonQuery() 
 
      Next 
 
      con.Close() 
 
     End Using 
 
    End Using 
 
    Return (Data.Count)