[.Net] Datatables of Arraylists tussen DAL en BL*

Pagina: 1
Acties:

  • foske
  • Registratie: Juli 2001
  • Laatst online: 19:50
goedenmiddag.

Na vandaag sinds 12:00 aan het zoeken te zijn geweest naar een oplossing om in het (voor mij nieuwe) ASP.net een simpele, maar toch effiente manier te vinden om gewoon via een SP waar meerdere selects in staan (ik moet een paar dropdown's vullen) meerdere recordssets (of hoe dat tegenwoordig heet in .NET) terug te krijgen.

Ik classic asp deed je dat altijd met set rs = rs.NextRecordset, maar dat gaat nu dus niet meer.

Ik heb het hele boek ASP.NEt Unleashed en 4guys, dotnetjunkies, asp.net enz enz... gehad, dus als er dan nu nog iemand kan komen met een link naar die sites, dan wordt ik boos (op mezelf uiteraard :) ), maar als het antwoord er wel op staat, ben ik denk ik toch wel heel erg blij te gelijk...

grz

[ Voor 3% gewijzigd door foske op 02-07-2003 16:45 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Je zult je eens moeten verdiepen in ADO.NET

In .NET heb je DataSets en DataReaders.

Je kan verschillende DataTables vullen met gegevens uit je databank, en die dan toekennen aan de datasource property van de respectievelijke dropdownlists. Echter, je zult die niet dmv 1 SP kunnen vullen lijkt me.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ASP.NET:
1
2
3
4
5
6
7
8
Dim dr As SqlDataReader = myCommand.ExecuteReader()
While dr.read()

End while
dr.NextResult 
While dr.read()

End while


@whoami:
Ik kan meerdere resultsets terugkrijgen in een SP. :)

[ Voor 30% gewijzigd door gorgi_19 op 02-07-2003 16:50 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
gorgi_19 schreef op 02 July 2003 @ 16:49:
ASP.NET:
1
2
3
4
5
6
7
8
Dim dr As SqlDataReader = myCommand.ExecuteReader()
While dr.read()

End while
dr.NextResult 
While dr.read()

End while
Mja, zo kan je het idd ook doen. Je moet dan wel voor ieder record zelf een ListItem gaan maken en opvullen en dat aan de dropdownlist hangen.
Beetje omslachtig imho als het ook kan dmv de DataSource property.
@whoami:
Ik kan meerdere resultsets terugkrijgen in een SP. :)
Dat kan je idd wel, maar hoe laad je dan die resultsets in verschillende datatables ? Dat heb ik nl. nog nooit geprobeerd

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 02 juli 2003 @ 19:07:
[...]

Mja, zo kan je het idd ook doen. Je moet dan wel voor ieder record zelf een ListItem gaan maken en opvullen en dat aan de dropdownlist hangen.
Beetje omslachtig imho als het ook kan dmv de DataSource property.
Ik laad alles in arrays. Datatables komen bij mij m'n datalaag niet uit. :) Dus ik return een custom class
Dat kan je idd wel, maar hoe laad je dan die resultsets in verschillende datatables ? Dat heb ik nl. nog nooit geprobeerd
[/quote]
In dit geval moet je niet een sqldatareader gebruiker, maar laadt je alles in een dataset (welke bestaat uit datatables)
Deze kan je dan aanroepen dmv: dataset.datatable(0), dataset.datatable(1), etc.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
gorgi_19 schreef op 02 July 2003 @ 19:14:
[...]

Ik laad alles in arrays. Datatables komen bij mij m'n datalaag niet uit. :) Dus ik return een custom class
Mwah.... Dat doe ik wel. Gewoon een datatable returnen en die binden aan een control.
In dit geval moet je niet een sqldatareader gebruiker, maar laadt je alles in een dataset (welke bestaat uit datatables)
Deze kan je dan aanroepen dmv: dataset.datatable(0), dataset.datatable(1), etc.
Weet ik wel, maar hoe weet de DataAdapter dat die verschillende resultsets in verschillende datatables moeten gegooid worden? Gebeurt dat gewoon zo ?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 02 July 2003 @ 19:17:
[...]

Mwah.... Dat doe ik wel. Gewoon een datatable returnen en die binden aan een control.
Nadeel van binden aan een datatable binden aan een control vind ik het 'gevaar' van wijzigen. Gegevens heb ik zelf op meerdere plaatsen nodig. Mocht ik bijvoorbeeld een kolomnaam wijzigen, dan wijzigt deze in principe ook mee in de datatable. Het zelfde geldt voor kolommen toevoegen.
Weet ik wel, maar hoe weet de DataAdapter dat die verschillende resultsets in verschillende datatables moeten gegooid worden? Gebeurt dat gewoon zo ?
Dat gebeurd gewoon zo.. Iedere resultset heeft z'n eigen datatable.

[ Voor 7% gewijzigd door gorgi_19 op 02-07-2003 19:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
gorgi_19 schreef op 02 July 2003 @ 19:23:
[...]

Nadeel van binden aan een datatable binden aan een control vind ik het 'gevaar' van wijzigen. Gegevens heb ik zelf op meerdere plaatsen nodig. Mocht ik bijvoorbeeld een kolomnaam wijzigen, dan wijzigt deze in principe ook mee in de datatable. Het zelfde geldt voor kolommen toevoegen.
Die moet je ook at - runtime niet gaan wijzigen. :+
Dat gebeurd gewoon zo.. Iedere resultset heeft z'n eigen datatable.
Hmm... nice. Ga ik straks ff testen.

https://fgheysels.github.io/


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

whoami schreef op 02 juli 2003 @ 19:25:
[...]

Die moet je ook at - runtime niet gaan wijzigen. :+
Daarbij, een DataTable is volgens mij net zo Disconnected als een Dataset.

Dus @gorgi, waarom zou een aan een control gebinde DataTable wijzigen als er wat in de data of metadata wijzigd? Of bedoel je als er wat gewijzigd wordt in het control waaraan de datatable gebind is?

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

mOrPhie schreef op 02 July 2003 @ 19:35:
[...]


Daarbij, een DataTable is volgens mij net zo Disconnected als een Dataset.

Dus @gorgi, waarom zou een aan een control gebinde DataTable wijzigen als er wat in de data of metadata wijzigd? Of bedoel je als er wat gewijzigd wordt in het control waaraan de datatable gebind is?
* gorgi_19 heeft het er over dat z'n table in SQL Server wijzigt door er hier een kolom aan toe te voegen.

De data-adapter neemt deze in principe over en gooit de gewijzigde versie rechtstreeks de applicatie in.

Ik heb nergens beweerd dat ik het @runtime wijzig.

[ Voor 6% gewijzigd door gorgi_19 op 02-07-2003 19:36 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
gorgi_19 schreef op 02 July 2003 @ 19:36:
[...]

* gorgi_19 heeft het er over dat z'n table in SQL Server wijzigt door er hier een kolom aan toe te voegen.

De data-adapter neemt deze in principe over en gooit de gewijzigde versie rechtstreeks de applicatie in.
Als jij je datatable inlaadt dmv een 'SELECT *' wel ja...

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 02 July 2003 @ 19:38:
[...]


Als jij je datatable inlaadt dmv een 'SELECT *' wel ja...
Dan moet je met aliassen gaan werken; is onafhankelijk trouwens of je * gebruikt of niet.
SQL:
1
Select kolom as melp

Sowieso krijg je de mogelijkheid om gegevens eenvoudiger aan te passen in een class.

[ Voor 44% gewijzigd door gorgi_19 op 02-07-2003 19:44 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
:?
Nu ben ik niet mee...
Waarom moet je dan met aliassen gaan werken en niet als je select * doet?

SELECT veld, veld is performanter dan select *. Allereerst haal je daarmee enkel de data op die je nodig hebt , waardoor er minder data moet opgehaald worden, en die dus ook sneller verstuurd wordt. Daarnaast moet het dbms ook minder berekeningen gaan doen.

Zie ook hier:
Don't return more columns or rows of data to the client than absolutely necessary. This just increases disk I/O on the server and network traffic, both of which hurts performance. In SELECT statements, don't use SELECT * to return rows, always specify in your SELECT statement exactly which columns are needed to be returned for this particular query, and not a column more. In most cases, be sure to include a WHERE clause to reduce the number or rows sent to only those rows the clients needs to perform the task immediately at hand.

If your application allows users to run queries, but you are unable in your application to easily prevent users from returning hundreds, even thousands of unnecessary rows of data they don't need, consider using the TOP operator within the SELECT statement. This way, you can limit how may rows are returned, even if the user doesn't enter any criteria to help reduce the number or rows returned to the client.
http://www.sql-server-per...opers_tuning_tutorial.asp

https://fgheysels.github.io/


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Ok, * mOrPhie snapt 't :)

Of je de DataTable binnen je datalaag wil houden of niet is meer keuze dan regel, dus om dat "wijzig"-probleempje op te lossen zoals je zegt, kun je ook een copy van de datatable binden. Ik vind het array-gebeuren wat omslachtig als je kunt binden namelijk.

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
mOrPhie schreef op 02 July 2003 @ 19:46:
Ik vind het array-gebeuren wat omslachtig als je kunt binden namelijk.
Een ArrayList kan je ook binden aan een control dacht ik door gewoon het volgende te doen:
code:
1
2
MyDataGrid.Datasource = myArrayList;
MyDataGrid.DataBind();

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 gaat maar even wat duidelijker uitleggen wat ik bedoel..

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Create PROCEDURE dbo.ProSim_GetPlayersByCountry
(
    @UserID int
)
AS

Declare @CountryID int

SELECT     
    @CountryID = dbo.prosim_country.CountryID
FROM         
    dbo.prosim_country RIGHT OUTER JOIN 
    dbo.prosim_user ON dbo.prosim_country.GameID = dbo.prosim_user.GameID
WHERE     
    (dbo.prosim_user.userID = @UserID)

SELECT     
    dbo.prosim_player.PersonID AS PlayerID, 
    dbo.prosim_player.CompanyID, 
    dbo.prosim_player.Firstname, 
    dbo.prosim_player.Lastname, 
    dbo.prosim_player.MiddleInitials, 
    dbo.prosim_player.occupation, 
    dbo.prosim_user.UserName
FROM         
    dbo.prosim_user RIGHT OUTER JOIN
    dbo.prosim_company ON dbo.prosim_user.userID = dbo.prosim_company.UserID RIGHT OUTER JOIN
    dbo.prosim_player ON dbo.prosim_company.UserID = dbo.prosim_player.CompanyID
WHERE     
    (dbo.prosim_company.CountryID = @CountryID)

Dat is een voorbeeld van een SP van mij, en hier de bijbehorende regels uit de datalaag.
De bijbehoreden code om deze uit te lezen:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
        ' *********************************************************************************************
        '
        ' GetPlayersByCountry method
        '
        ' Returns all the players (as managers) from a country. Country is identified by
        ' a UserID
        '
        ' *********************************************************************************************

        Public Function GetPlayersByCountry(ByVal UserID As Integer) As ArrayList Implements IDataProvider.GetPlayersByCountry
            ' Create Instance of Connection and Command Object
            Dim myConnection As SqlConnection = GetSqlConnection()
            Dim myCommand As New SqlCommand("ProSim_GetPlayersByCountry", myConnection)

            ' Mark the Command as a SPROC
            myCommand.CommandType = CommandType.StoredProcedure

            ' Add Parameters to SPROC
            myCommand.Parameters.Add("@UserID", SqlDbType.Int, 4).Value = UserID

            Dim Players As New ArrayList
            ' Open the connection and execute the Command

            myConnection.Open()

            Dim result As SqlDataReader = myCommand.ExecuteReader()

            While result.Read

                Players.Add(Me.PopulatePlayersFromSqlDataReader(result))

            End While

            result.Close()
            myConnection.Close()

            Return Players

        End Function

En nu nog de laatste functie:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        Private Function PopulatePlayersFromSqlDataReader(ByVal dr As SqlDataReader) As Player

            Dim m_oPlayer As New Player

            m_oPlayer.PersonID = Int32.Parse(dr("PlayerID"))
            m_oPlayer.CompanyID = Int32.Parse(dr("CompanyID"))
            m_oPlayer.RegDate = Convert.ToDateTime(dr("RegDate"))
            m_oPlayer.Occupation = Convert.ToString(dr("Occupation"))
            m_oPlayer.Email = Convert.ToString(dr("Email"))
            m_oPlayer.FirstName = Convert.ToString(dr("FirstName"))
            m_oPlayer.MiddleInitials = Convert.ToString(dr("MiddleInitials"))
            m_oPlayer.LastName = Convert.ToString(dr("LastName"))
            m_oPlayer.UserName = Convert.ToString(dr("UserName"))

            Return m_oPlayer

        End Function

De player class laat zich grotendeels wel raden.. :+

Deze laatste functie wordt gebruikt om de player class te vullen, en staat in meer methods (bijvoorbeeld ook in GetPlayersByCompany). Op deze wijze wordt een stukje uniformiteit afgedwongen.

Mocht er een fout optreden, op welke wijze dan ook, met een SP, een verkeerde kolomnaam (zeker handig als je een flexibiliteit wil, waarbij je zonder enige moeite kan switchen tussen verschillende databases als backend), dan vind ik dit wel een duidelijke methodiek. Mocht er iets fouts optreden, dan komt deze niet eens voorbij de datalaag.

Eventuele bewerkingen, zoals een formattedname, in het geval van een player, is zo ook eenvoudig te maken. (zeker als er nog enige rules bij zitten, zoals aanhef op basis van geslacht) en dit is wat lastiger voor elkaar te krijgen als je een datatable bindt.

Zit je nu gebonden aan altijd deze kolommen? Nee. Je kan makkelijk 'optionele' velden maken, door middel van
ASP.NET:
1
2
3
4
5
6
           Dim dt As DataTable = dr.GetSchemaTable
            If dt.Columns.Contains("InitialPassword") Then

                m_oCompany.InitialPassword = dr("InitialPassword")

            End If


Nu de hamvraag: Is het 'binden' in de datalaag veel extra werk? Nee, door het gebruik van de functie scheelt dit enorm in werk. Ook geeft het een stukje extra 'veiligheid'. Ook de functie is bovendien herbruikbaar, zoals ik al eerder aangaf.

* gorgi_19 hoopt dat het nu wat duidelijker wordt waar hij mee bezig is.. :+

[ Voor 6% gewijzigd door gorgi_19 op 02-07-2003 19:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Ja, ik snap wel wat je bedoeling is nu.
Echter, ik zie nog altijd niet in welke problemen er wel zouden kunnen optreden als je gebruik maakt van een datatable...

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 02 juli 2003 @ 20:08:
Ja, ik snap wel wat je bedoeling is nu.
Echter, ik zie nog altijd niet in welke problemen er wel zouden kunnen optreden als je gebruik maakt van een datatable...
Owke.. :)

Ik heb een tabel in een database met de volgende velden:
PersonID: int identity
FirstName varchar(30)
MiddleInitials varchar(10)
LastName varchar(30)
Sex bit

Ik heb een DropDownlist, value veld is PersonID.
Voor het textveld: Als het geslacht man is, dan moet er "De heer" voor, ander "De vrouw", vervolgens de voornaam , tussenvoegsels en achternaam".
Bovendien moet er nog rekening gehouden worden met internationalisatie. Zo moet er afhankelijk van de gekozen taal :"De heer" of "Mr." of wat dan ook komen te staan.

Kortom, een aantal rules. :) Deze zijn wat lastiger los te laten als je een datatable wil koppelen. Je kan het wel met het OnItemBound wat vogelen, maar dit lijkt me niet zo een goede oplossing, zeker als deze dropdown nog op meerde plaatsen in een applicatie wil gebruiken :)

[ Voor 15% gewijzigd door gorgi_19 op 02-07-2003 20:14 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • foske
  • Registratie: Juli 2001
  • Laatst online: 19:50
Zo stel je een simpele vraag, en zo word je topic "gestolen" :p iig bedankt gorgi, zal er vanavond eens naar kijken, mag nou weer naar de zoveelste examen uitreiking...

  • foske
  • Registratie: Juli 2001
  • Laatst online: 19:50
Ook al is het nu beetje "off-topic" wil ik toch nog graag een bevesteging van mijn manier van werken. Want strax leer ik me dit aan, en hoor ik 4 maanden later dat het dom is, en kan ik weer alles veranderen. Hier is mijn code:

ASP.NET C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    sub Page_Load
         Dim conDVM As SQLConnection
         Dim cmdSelect As SQLCommand

         conDVM = New SQlconnection("Server=servertje;UID=gekkie;PWD=watte?;database=jaja")
    
         cmdSelect = New SQLCommand("dbo.artInsertDropDowns", conDVM)
         cmdSelect.CommandType = CommandType.StoredProcedure
         
         conDVM.Open()
         Dim dr As SqlDataReader = cmdSelect.ExecuteReader()
         bedrijfsID.datasource = dr
         bedrijfsID.dataValueField = "id"
         bedrijfsID.DataTextField = "bedrijfsnaam"
         bedrijfsID.databind()
         
         dr.NextResult 
         CategorieID.datasource = dr
         CategorieID.dataValueField = "id"
         CategorieID.DataTextField = "categorie"
         CategorieID.databind()
         
         conDVM.close()
    end Sub


(Het gaat hier dus gewoon even simpel over 2 dropdownboxen).

Dus gaarne een beetje feedback :+

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 houdt er niet van om je DAL, BLL en PL met elkaar te mixen; iets wat jij doet. Je onderhoudbaarheid van je code is imho zo een stuk minder.

Zie oa ook: [rml][ ASP.NET] Webdev tips[/rml]

Staan wel een aantal leuke tips in.

Om wat concreter te gaan
  • Je datalaag heeft niets te zoeken bij de presentatie
  • Je connectionstring uit je code halen en in je web.config zetten
  • Het enige wat je doet is data uit een database halen. Lijkt me een beetje onzinnig; caching van deze data is imho goed mogelijk, waardoor je je database ontlast.
  • Het gaat er definitie fout, aangezien je geen enkele postback kan uitvoeren. Bij iedere keer dat de pagina geladen wordt, wordt nu de dropdownlist opnieuw gebind. Als er al data in stond, is deze 'weg'. Ergo: If Page.IsPostBack Then..

[ Voor 82% gewijzigd door gorgi_19 op 04-07-2003 11:51 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Een dataReader gebruiken IN je ASP.NET pagina is imho niet goed. Daarmee ga je nl. je DAL en presentatie-laag niet meer gescheiden houden.

Verder heeft een DataReader ook als nadeel dat hij zijn connectie exclusief gebruikt. Dwz dat, zolang de datareader niet gesloten is, die connectie niet door iets anders gebruikt kan worden. Een datareader zou ik dus alleen maar gebruiken in mijn Data Access Layer om bv snel door een resultset te loopen en een array oid op te vullen.

In jouw geval kan je beter een DataSet gebruiken die je dmv een DataAdapter opvult.
Als gorgi_19 zegt dat die DataAdapter wel zijn plan zal trekken ivm de meerdere resultsets die de SP kan returnen, en dus zelf iedere resultset in een aparte DataTable zet, dan kan je die verschillende datatables gebruiken om aan de DataSource property van je DropDownListen toe te kennen.

[ Voor 2% gewijzigd door whoami op 04-07-2003 11:49 . Reden: ff wat leesbaarder gemaakt ]

https://fgheysels.github.io/


  • foske
  • Registratie: Juli 2001
  • Laatst online: 19:50
pff dus ik moet echt gaan verdiepen in die code van jou... :p (nice response tijd trouwens.. :D)

Edit: Merk trouwens wel dat .NEt echt een hele andere manier van denken heeft, moet ik nog beetje aan wennen...

[ Voor 38% gewijzigd door foske op 04-07-2003 11:53 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Fossie schreef op 04 July 2003 @ 11:50:
pff dus ik moet echt gaan verdiepen in die code van jou... :p (nice response tijd trouwens.. :D)
Mwah, dat hoeft niet noodzakelijk. Als je je nog niet bezig houd met n-tier development van webapplicaties (wat je imho toch best wel zo snel mogelijk doet), dan kan je volgende code gebruiken:

code:
1
2
3
4
5
6
7
8
9
10
11
Dataset aDs = new DataSet();
SqlDataAdapter dta = new SqlDataAdapter();
dta.SelectCommand = aCommand;

dta.Fill (aDs);

DropDownList1.DataSource = aDs.Tables[0];
DropDownList2.DataSource = aDs.Tables[1];

DropDownList1.DataBind();
DropDownList2.DataBind();


provided natuurlijk dat die Fill goed werkt met meerdere resultsets. Nog altijd zelf niet getest enzo. :P

https://fgheysels.github.io/


  • foske
  • Registratie: Juli 2001
  • Laatst online: 19:50
ja wat het is, het wordt een project dat voornamelijk gewoon ASP is, en alleen 2 pagina's (eentje met upload en image resize, voor beheer, dus preformance hoeft niet superieur te zijn, en nog eentje met een soort winkelwagentje dmv datagrid) en dan wil ik in de zomer me nog verder verdiepen in ASP.NET

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

whoami schreef op 04 July 2003 @ 11:53:

provided natuurlijk dat die Fill goed werkt met meerdere resultsets. Nog altijd zelf niet getest enzo. :P
Je krijgt dan gewoon meerdere datatables in je Dataset. Werkt perfect dus :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.

Pagina: 1