0

次のようなWebサービスからデータを返す必要があります。

data.page = 1
data.count = 12883
data.rows(0).id = 1
data.rows(0).name = "bob"
data.rows(1).id = 2
data.rows(1).name = "steve"
data.rows(2).id = 3
data.rows(2).name = "fred"

私はこれを行う方法がわかりません。私は単純な型と単純な配列を復活させましたが、このようなオブジェクトは決してありません。

データソースはSQLデータベースです。ターゲットはjavascript/ajax関数です。現在、行自体をデータセットとして正常に返していますが、それは機能しますが、カウントと他のいくつかの「親レベル」変数を追加する必要があります。

完全に開示するために、機能しているコードは次のとおりです。

<WebMethod()> _
Public Function rptPendingServerRequests() As DataSet
    Dim connetionString As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim adapter As New SqlDataAdapter
    Dim ds As New DataSet
    Dim sql As String

    connetionString = "..."
    sql = "SELECT usm_request.request_id, usm_request.status, usm_request.req_by_user_id " +
        "FROM usm_request " +
        "WHERE usm_request.request_id in " +
        "(SELECT distinct(usm_request.request_id) from usm_request, usm_subscription_detail WHERE usm_request.request_id = usm_subscription_detail.request_id " +
        "AND usm_subscription_detail.offering_id = 10307) ORDER BY usm_request.request_id DESC"
    connection = New SqlConnection(connetionString)

    Try
        connection.Open()
        command = New SqlCommand(sql, connection)
        adapter.SelectCommand = command
        adapter.Fill(ds)
        adapter.Dispose()
        command.Dispose()
        connection.Close()

        Return ds

    Catch ex As Exception
    End Try
End Function

そして、私はFlexiGridでそれを消費しようとしています。私はそれで数時間働いていますが、運がありません。基本的に次のサイトのPHPを.netに変換する必要があります

http://code.google.com/p/flexigrid/wiki/TutorialPropertiesAndDocumentation

4

1 に答える 1

1

いくつかのクラスを作成し、データベースからこれらのクラスにデータを移動するだけの方がはるかに良いと思います。例えば:

Public Class MyDataClass
    Public Property Page As Integer

    Public ReadOnly Property Count As Integer
        Get
            If Me.Rows IsNot Nothing Then
                Return Me.Rows.Count
            Else
                Return 0
            End If
        End Get
    End Property

    Public Property Rows As List(Of MyDataRow)

    ' Parameterless constructor to support serialization.
    Public Sub New()
        Me.Rows = New List(Of MyDataRow)
    End Sub
    Public Sub New(wPage As Integer, ds As DataSet)
        Me.New()

        Me.Page = wPage

        For Each oRow As DataRow In ds.Tables(0).Rows
            Dim oMyRow As New MyDataRow

            oMyRow.Id = oRow("id")
            oMyRow.Name = oRow("Name")

            Me.Rows.Add(oMyRow)
        Next
    End Sub
End Class

Public Class MyDataRow
    Public Property Id As Integer
    Public Property Name As String

    ' Parameterless constructor to support serialization
    Public Sub New()

    End Sub
End Class

次に、メソッドの戻り値の型を MyDataClass に変更し、戻り値を次のように変更します。

        Return New MyDataClass(1, ds)
于 2013-01-07T22:34:55.480 に答える