[ASP.net] hoe meerdere datasets binden met datagrid?

Pagina: 1
Acties:

  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 06-05 06:51
Ik heb een methode geschreven die code gegevens uit een DB haalt.
__code geef ik 2 parameters mee, met een dataset als resultaat van de stored procedure in msSQL

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub getCodes(ByVal type, ByVal datum)
        Dim __code As New retail.code.code
        Dim __ds As System.Data.DataSet

        Try
            __code.SeasonCode = type
            __code.DateRecordUpdated = datum
            __ds = __code.getCodeLijst

        Catch __exception As Exception
            Response.Write("Error: 101")
            Response.Write(__exception)
            Exit Sub
        End Try

        If __ds.Tables(0).Rows.Count > 0 Then
            dgOutput.DataSource = __ds
            dgOutput.DataBind()
        Else
            Response.Write("Er zijn geen nieuwe codes voor " & type & "<br>")
        End If

    End Sub

Werkt perfect. Echter wil ik nu de methode verschillende keren aanroepen als er meerdere types nodig zijn. Dus:
code:
1
2
 getCodes("type1", "2005/02/01")
 getCodes("type3", "2005/02/01")

Resultaat is dat hij de datagrid overschrijft. Ik zou dus eerst van de datasets 1 set moeten maken om dan pas te binden. Iemand een idee.
Ik dacht eerst aan de merge methode, maar die is enkel voor wijzigingen.

[ Voor 6% gewijzigd door ibizadesire op 08-04-2005 12:14 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Wat ik een beetje eng vindt aan jouw code is dat je een aparte sub geschreven lijkt te hebben voor het ophalen van de gegevens uit de database, maar dat je daarin die datasource gaat toewijzen aan een datagrid welke je niet aan die sub meegeeft. Het zou mooier zijn een dataset terug te geven welke je dan in de aanroepende methode aan de grid zou kunnen binden.

Verder denk ik dat je even moet weten dat een DataSet een verzameling DataTables is. Je kunt dus verschilende datatables kwijt in één dataset. Die dataset kun je vervolgens binden aan een control. Gebruikers kunnen in je datagrid dan de tabel selecteren die ze willen bekijken.

Maar wat jij wil is denk ik een ander soort query (eentje met meerdere mogelijke waardes) om op die manier een gebundelde resultaatset terug te krijgen. Je zou ook de datarows van de verschillende antwoorden samen in een aparte datatable/dataset kunnen proppen en die aan de datagrid kunnen binden. Daarmee haal je je wel meer werk op de hals dan nodig is IMHO.

[ Voor 13% gewijzigd door OZ-Gump op 08-04-2005 13:08 ]

My personal website


  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
je kan van twee datasets 1 dataset maken mvb de DataSet.Merge method

dan kan je weer 1 dataset binden aan je presentatie control

  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 06-05 06:51
@OZ-Gump :
Het is niet de bedoeling dat de gebruikers tussen de tabellen kunnen springen. Het is immers 1 tabel. De data die getoond wordt hangt af van het gekozen aantal types (aantal staat niet vast!)
dus gewoon een paar keer een query draaien met telkens een ander WHERE type=meegeventype

als ik gewoon response.write zou doen zou alles mooi onder elkaar komen, zelfde aantal velden ed.

@joopst:
Had ik al eens bekeken maar ik dacht dat het enkel voor wijzigingen was. Ik ga er maar eens terug mee aan de slag

  • ibizadesire
  • Registratie: Juli 2003
  • Laatst online: 06-05 06:51
nu werkt het perfect. Er is een "totaal" dataset waar telkens de nieuwe wordt bijgevoegd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Try
    __ean.SeasonCode = arrElement
    __ean.DateRecordUpdated = __datum
    __ds = __ean.getCodeLijst

    __dsTotaal.Merge(__ds)

Catch __exception As Exception
    Response.Write("Error: 101")
    Response.Write(__exception)
    Exit Sub
End Try

If __dsEan.Tables(0).Rows.Count > 0 Then
    dgEanOutput.DataSource = __dsTotaal
    dgEanOutput.DataBind()
End If


eigenlijk heel eenvoudig 8)7

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
goed bezig kerel :7
Pagina: 1