запросить базу данных с каждым объектом в Arraylist и привязать данные к gridview? - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть функция, которая возвращает список номеров счетов в виде Arraylist.Я пытаюсь использовать каждую учетную запись в качестве параметра команды в другой подпрограмме, чтобы получить больше данных о каждом номере учетной записи.Это только возвращает данные для последнего номера счета в массиве.Мне нужно использовать каждый номер счета, позвонить в базу данных, получить дополнительную информацию и сохранить ВСЕ данные в Gridview (привязка данных).Пример: если в моем массиве было 3 номера аккаунта, верните 3 строки данных в сетку.Я борюсь с тем, как получить ВСЕ сведения для каждого значения (номера счета) в Arraylist.Может кто-нибудь направить меня в правильном направлении?Я думаю, что это можно сделать, но я не уверен, что мой подход правильный или нет.Возможно, мне нужно создать таблицы данных, которые содержат дополнительную информацию для каждого значения, переданного через Arraylist .... Любые идеи ??

@ jwatts1980 спасибо за комментарий: я постараюсь уточнить.У меня есть массив номеров счетов (и, возможно, именно здесь я не в курсе). Я пытаюсь использовать значения в этом ArrayList в качестве параметров команды при другом вызове другой таблицы / файла, который возвращает больше информации об этих учетных записях.Я предоставлю часть кода, чтобы прояснить, что именно я пытаюсь сделать:

Private Function ReturnMultAccts(ByVal strAcct) As ArrayList
Dim acctsDetail As New ArrayList
Dim dsn As String = ConfigurationManager.ConnectionStrings.ConnectionString
    Dim sql As String = "SELECT DISTINCT * FROM FILE WHERE ACCTNUM=?"
    Using conn As New OdbcConnection(dsn)
        Using cmd As New OdbcCommand(sql, conn)
            conn.Open()
            cmd.Parameters.Add("ACCTNUM", OdbcType.VarChar, 20).Value = strAcct
            Dim rdrUsers As OdbcDataReader = cmd.ExecuteReader()
            If rdrUsers.HasRows Then
                While rdrUsers.Read()
            acctsDetail.Add(Trim(rdrUsers.Item("ACCTNUM")))
                End While
            End If
            rdrUsers.Close()
            conn.Close()
        End Using
    End Using

Это возвращает массив номеров счетов (допустим, это 3 номера счета).Я вызываю эту функцию из другого Sub:

Private Sub GetMoreAcctInfo(ByVal strAcct)
    'Create New ArrayList
    Dim MultAccts As New ArrayList
    'Pass strAcct to Function to get Multiples
    MultAccts = ReturnMultAccts(strAcct)
    'Create the variable BachNum for the loop
    Dim BachNum As String = MultAccts.Item(0)
    For Each BachNum In MultAccts
   'Get All of the necessary info from OtherFile based on the BachNum for BOS's
        Dim dsn As String = ConfigurationManager.ConnectionStrings.ConnectionString
        Dim sql As String = "SELECT ACCTNUM, BILSALCOD1, BILSALCOD2, BILSALCOD3, OTHACCTNUM FROM OtherFile WHERE OTHACCTNUM=?" 'Equal to the items in the arraylist
        Using conn As New OdbcConnection(dsn)
            Using cmd As New OdbcCommand(sql, conn)
                conn.Open()
                cmd.Parameters.Add("OTHACCTNUM", OdbcType.VarChar, 20).Value = BachNum
                Using adapter = New OdbcDataAdapter(cmd)
                    Dim DS As New DataSet()
                    adapter.Fill(DS)
                    GridView1.DataSource = DS
                    GridView1.DataBind()
               End Using
            End Using
        End Using
    Next
End Sub

Надеюсь, это проясняет, что я пытаюсь сделать ... ??

1 Ответ

1 голос
/ 28 апреля 2011

Чтобы уточнить мое предложение, вам понадобится список строго типизированных объектов.Вы можете добавить эти элементы в список, а затем связать список с GridView.

Я начну с самого начала.Вы знаете, какие данные поступают из вашей базы данных: ACCTNUM, BILSALCOD1, BILSALCOD2, BILSALCOD3 и OTHACCTNUM.Таким образом, вы можете использовать их для создания объекта.

Friend Class AccountClass
    Private pACCTNUM As string = ""
    Private pBILSALCOD1 As string = ""
    Private pBILSALCOD2 As string = ""
    Private pBILSALCOD3 As string = ""
    Private pOTHACCTNUM As string = ""

    Public Property ACCTNUM() As string
        Get
            Return pACCTNUM
        End Get
        Set(ByVal value as string)
            Me.pACCTNUM = value
        End Set
    End Property

    Public Property BILSALCOD1() As string
        Get
            Return pBILSALCOD1
        End Get
        Set(ByVal value as string)
            Me.pBILSALCOD1 = value
        End Set
    End Property

    Public Property BILSALCOD2() As string
        Get
            Return pBILSALCOD2
        End Get
        Set(ByVal value as string)
            Me.pBILSALCOD2 = value
        End Set
    End Property

    Public Property BILSALCOD3() As string
        Get
            Return pBILSALCOD3
        End Get
        Set(ByVal value as string)
            Me.pBILSALCOD3 = value
        End Set
    End Property

    Public Property OTHACCTNUM() As string
        Get
            Return pOTHACCTNUM
        End Get
        Set(ByVal value as string)
            Me.pOTHACCTNUM = value
        End Set
    End Property

    Sub New(ByVal ACCTNUM As string, ByVal BILSALCOD1 As string, ByVal BILSALCOD2 As string, ByVal BILSALCOD3 As string, ByVal OTHACCTNUM As string)
        Me.ACCTNUM = ACCTNUM
        Me.BILSALCOD1 = BILSALCOD1
        Me.BILSALCOD2 = BILSALCOD2
        Me.BILSALCOD3 = BILSALCOD3
        Me.OTHACCTNUM = OTHACCTNUM
    End Sub
End Class

Затем вы переделываете процедуру GetMoreAcctInfo (), чтобы использовать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...