Avatar billede new_one Nybegynder
31. maj 2007 - 03:14 Der er 12 kommentarer og
1 løsning

data ud af dataset

jeg har lavet en side med en adapter og et gridview som virker fint
men kan man ikke hive dataene ud af datasettet en for en istedet for at benytte gridview ?
Avatar billede arne_v Ekspert
31. maj 2007 - 04:44 #1
Sagtens.

ds.Tables["tabelnavn"].Rows[rowno].ItemArray[colno]

hvis jeg husker rigtig.

Men hvis du alligevel selv vil fiske ud hvorfor så ikke bruge en DataReader fremfor
et DataSet ?
Avatar billede new_one Nybegynder
31. maj 2007 - 05:43 #2
fordi det var det jeg lige havde lavet som virkede :)

ds.Tables["txt"].Rows[0].ItemArray[0]

burde det ikke give mig den første txt i datasettet ?

men burde det ikke komme ud i samme format som txt (streng) ?
Avatar billede neoman Novice
31. maj 2007 - 12:49 #3
Et kald som dette :

ds.Tables["tabelnavn"].Rows[rowIndex].Item[columnIndex]

giver den værdi som ligger i kolonnen med index=columnIndex i rækken som har index=rowIndex i tabellen som har tabelnavn="tabelnavn"

hvis du har en tabel som hedder txt, så vil

ds.Tables["txt"].Rows[0].Item[0]

giver det, der står i første kolonne i første række i tabellen - hvad det så end er.
Avatar billede arne_v Ekspert
31. maj 2007 - 15:36 #4
jeg mener at den returnerer object saa du skal evt. kalde .ToString() for at faa
en streng ud af det
Avatar billede new_one Nybegynder
31. maj 2007 - 21:47 #5
string info=ds.Tables["txt"].Rows[0].ItemArray[0].ToString();

giver fejlen

Object reference not set to an instance of an object.
Avatar billede new_one Nybegynder
31. maj 2007 - 22:58 #6
fedt nok opdagede at det virker hvis jeg benytte [0] istedet for "txt" 

men hvordan finder man ud af antallet af rows i et dataset , jeg har læst at det er en af forskellene mellem dataset og datareader men har ikke fundet ud af hvordan.
Avatar billede arne_v Ekspert
31. maj 2007 - 23:08 #7
ds.Tables["tabelnavn"].Rows.Count

hvis jeg husker rigtigt
Avatar billede new_one Nybegynder
31. maj 2007 - 23:08 #8
burde have vidst svaret var count :)

smid et svar hvis i vil have point
Avatar billede arne_v Ekspert
31. maj 2007 - 23:11 #9
et DataSet har alle data i memory

en DataReader har kun en enkelt raekke i memory

nogen gange er det en fordel at have alt data i memory, men nogen gange er det ikke
noedvendigt (og hvis data er 5 GB eller 50 GB er det umuligt)
Avatar billede new_one Nybegynder
31. maj 2007 - 23:27 #10
nu kunne jeg godt tænke mig at skrive indholdet ud i en løkke som links
kan man det uden at skulle benytte grid og lign. ?
Avatar billede arne_v Ekspert
01. juni 2007 - 00:31 #11
jeg vil tro at man kan bruge en repeater også med et DataSet, men det lyder som
om du er bedre tjent med en DataReader
Avatar billede arne_v Ekspert
01. juni 2007 - 00:32 #12
et eksempel:

    <asp:Repeater id="MyDataList" runat="server">
        <ItemTemplate>
            <tr>
            <td><%# DataBinder.Eval(Container.DataItem,"F1") %></td>
            <td><%# DataBinder.Eval(Container.DataItem,"F2") %></td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>

og

        Dim con As SqlConnection = New SqlConnection ("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM T1", con)
        Dim ds As DataSet = New DataSet("T1")
        da.Fill(ds)
        MyDataList.DataSource = ds
        MyDataList.DataBind
        con.Close
Avatar billede arne_v Ekspert
01. juni 2007 - 00:32 #13
og et svar fra mig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester