2017-05-31 2 views
0

Ich habe diese JSONArray von Objekten, die 3 DatensätzeIterate durch JSON-Array in Webmethod mit vb.net

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

und ich durch sie versuchen, iterieren darstellen. Ich baute die folgende Klasse für sie

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 

In meinem Web-Methode kann ich auf die Daten zugreifen kann aber nicht einen Weg, um eine Schleife durch sie herauszufinden und speichern sie

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

Was ich versuche zu tun ist so etwas, ich habe versucht, es zu implementieren, aber mit "Länge" -Eigenschaft ist nicht zulässig

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 

aktualisieren

<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)

Return data.count ist nur für Testzwecke

+1

Sie müssen die Count-Eigenschaft anstelle von Length verwenden. 'Data.Count'. –

+0

@Chetan Ranpariya ,,, Ich habe versucht, dies für den Test ,,, Public Function TblRegJoinUpd3 (ByVal Daten As List (Of TblRegJoindata)) Für i As Integer = 0 To Data.Count - 1 Return Daten (i) .PrtStatus Weiter End Function ,,,,, ich nur den ersten Wert zurück statt drei ,,, – JSON

+1

Haben Sie debuggen und überprüfen, was die Anzahl der Daten ist ?. Wird die for-Schleife dreimal ausgeführt? Kannst du den Code in der Frage updaten und aktualisieren was nicht funktioniert und wie es nicht funktioniert? Wie soll es funktionieren? –

Antwort

0

Dank Chetan Ranpariya Die gesamte Arbeitslösung unter

ist

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)