2017-05-31 30 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)