Avatar billede locturian Nybegynder
17. august 2004 - 10:26 Der er 17 kommentarer og
1 løsning

Simpelt RecordSet

Hej,

Jeg har gennem længere tid programmeret ASP, og er nu gået i gang med ASP.net.

Jeg har dog problemer med selv de mest basale ting, hvorfor jeg efter lang tid på google, smider håndklædet i ringen, og ofre lidt point...

Forestil jer følgende: Jeg skal have lavet en nyhedsforside.

Jeg vil have postet nogle forskelle felter, fx. nyheden, overskrift, forfatter o.lign.

Hvordan laver jeg mit recordset? Og hvordan skriver jeg den enkelte post ud i min html i et loop?

Altså:

<html her>
<loop her>
<tabeller her>
<asp overskrift her>
<asp nyhed her>
<slut loop her>
<slut tabeller her>
<slut html her>

Oversæt til asp.net tak :) Sidder ellers med hovedet langt inde i alle mulige tutorials, men den ene er mere forvirrende en den anden... Skal bare bruge noget simpelt, gerne i flæng med:

ObjRs = MyConn.Execute("SQL SÆTNING")

<asp:label value="ObjRs("Overskrift").Value"></asp>

Ja, noget i den retning - Simpelt og overskueligt tak - Så er min dag lige reddet :)
Avatar billede locturian Nybegynder
17. august 2004 - 10:28 #1
wow... Sjovt som man laver slå fejl på en bærbar... :)
Avatar billede arne_v Ekspert
17. august 2004 - 10:44 #2
Her er et meget "gammeldags" eksempel:

<%@ Import Namespace="System.Data.OleDb" %>
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<%
    Dim con As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=")
    con.Open
    Dim sel As OleDbCommand = New OleDbCommand ("SELECT * FROM T1", con)
    Dim rdr As OleDbDataReader = sel.ExecuteReader
    While rdr.Read
%>
    <tr>
    <td><%=rdr(0)%></td>
    <td><%=rdr(1)%></td>
    </tr>
<%
    End While
    rdr.Close
    con.Close
%>
</table>
Avatar billede arne_v Ekspert
17. august 2004 - 10:45 #3
Du bør absolut bruge nogle af de nye ASP.NET features, men i det mindste
giver det et fungerende velkendt udgangspunkt
Avatar billede basementjack Nybegynder
17. august 2004 - 10:45 #4
Avatar billede locturian Nybegynder
17. august 2004 - 10:51 #5
arne, så lav ovenstående i en forståelig asp.net udgave? :) vel og mærke ved at benytte de "nye" features ;)
Avatar billede locturian Nybegynder
17. august 2004 - 10:55 #6
Et loop med en repeater tak? :)
Avatar billede snepnet Nybegynder
17. august 2004 - 11:00 #7
SqlConnection con = new SqlConnection(<connectionstring>);
SqlCommand com = new SqlCommand(<sommandstring>, con);
SqlDataAdapter adap = new SqlDataAdapter(com);

DataSet ds = new DataSet();
adap.Fill(ds);

DataGrid dg = new DataGrid();
dg.DataSource = ds;
dg.DataBind();

Så skal du så bare finde et sted at sætte datagriddet ind.... F.eks.
Form1.Controls.Add(dg);
Avatar billede locturian Nybegynder
17. august 2004 - 11:06 #8
Bad ikke om et datagrid - Det lister jo bare alt som var det et udprint af db :) Skal jo gerne være sådan så det kan sættes op til at ligne en hjemmeside ;)
Avatar billede snepnet Nybegynder
17. august 2004 - 11:08 #9
Det kan du sådan set også sagtens gøre med det - du definere templates til et datagrid lige som du gør til en repeater.
Det er bare mit forslag at du starter med datagriddet da det er betydelig nemmere at komme igang med, og der er desuden rigeligt potentiale i det.
Avatar billede snepnet Nybegynder
17. august 2004 - 11:09 #10
Dine templates kan du angive programmatisk - eller deklarativt i din aspx-kode. Du er meget frit stillet omkring det.
Avatar billede locturian Nybegynder
17. august 2004 - 11:22 #11
Hvordan hiver jeg så enkelt poster ud af det datagrid, og hvordan sætter jeg dem i min html ?
Avatar billede snepnet Nybegynder
17. august 2004 - 12:20 #12
Her er et eksempel på et datagrid angivet i aspx-koden.
Der er defineret 2 templates - en for vanlig visning, og en for hvordan det skal se ud når der editeres.

<asp:DataGrid id="dg" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateColumn HeaderText="SomeString">
            <ItemTemplate>
                <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FldString") %>'>
                </asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.FldInt") %>'>
                </asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>

Det eneste du så behøver at have i koden er så :

// i toppen
protected DataGrid dg;

//
SqlConnection con = new SqlConnection(<connectionstring>);
SqlCommand com = new SqlCommand(<sommandstring>, con);
SqlDataAdapter adap = new SqlDataAdapter(com);

DataSet ds = new DataSet();
adap.Fill(ds);

dg.DataSource = ds;
dg.DataBind();

Bemærk at det også er i templated du angiver hvordan der skal bindes.
Avatar billede snepnet Nybegynder
17. august 2004 - 12:22 #13
Html-koden bliver generet for dig.
Avatar billede locturian Nybegynder
17. august 2004 - 12:37 #14
Kan ikke helt få det til at spille, min kode ser således ud;

Public Sub Page_Load(Src As Object, E As EventArgs)

    Protected DataGrid dg

    Dim MyConnection As SQLConnection
    Dim MyCommand As SQLCommand

    MyConnection con = New SQLConnection("server=217.116.***.***;uid=***;pwd=***;database=loc_db")
    MyCommand com = New SQLCommand("SELECT * FROM tbl_nyheder", MyConnection)


        SqlDataAdapter adap = new SqlDataAdapter(com)

        MyConnection.Open()

      DataSet ds = new DataSet()
        adap.Fill(ds)
        dg.DataSource = ds
        dg.DataBind()


    Myconnection.Close()

    End Sub
Avatar billede snepnet Nybegynder
17. august 2004 - 16:18 #15
arbejder du i visual studio ?
Avatar billede locturian Nybegynder
17. august 2004 - 18:42 #16
Nej, bruger Web Matrix - Skulle måske siges at jeg bruger Vb.net som sprog ;)
Avatar billede snepnet Nybegynder
17. august 2004 - 20:08 #17
Så kan du bare trække dit grid ind på siden i designeren, og skrive følgeden kode :

Sub Page_Load(sender As Object, e As EventArgs)
if Not IsPostBack
    FillGrid()
  end if
End Sub

private Sub FillGrid
    Dim MyConnection As SQLConnection
    Dim MyCommand As SQLCommand

    MyConnection con = New SQLConnection("server=217.116.***.***;uid=***;pwd=***;database=loc_db")
    MyCommand com = New SQLCommand("SELECT * FROM tbl_nyheder", MyConnection)

    SqlDataAdapter adap = new SqlDataAdapter(com)

    DataSet ds = new DataSet()
    adap.Fill(ds)
    dg.DataSource = ds
    dg.DataBind()
End Sub

Så skulle det gerne fungere - hvis altså du får returneret noget på din select.

Vær opmærksom på at MxDataGriddet har nogle ekstra trix i ærmet i forhold til et standard datagrid.
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:20 #18
hej locturian :o)
jeg prøver at rydde op i gamle sager - der er ved at gå lidt koks idet.
såh... du får lige et svar her, hvis jeg har været behjælpelig.
mvh
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