Avatar billede doncarnage Nybegynder
30. november 2008 - 01:55 Der er 12 kommentarer og
1 løsning

Linjeskift med datalist

Hey hey...

Jeg har lavet et simpelt system i ASP.Net C#, hvor jeg skriver data til en tabel vha. en tekstboks.. Det fungerer som det skal, men når jeg prøver at udskrive indholdet går det "galt"..

Jeg udskriver det vha. datalist og det gør jeg på følgende måde:

    <form id="form1" runat="server">
    <div>
        <asp:DataList ID="DataList1" runat="server" CellPadding="4" DataSourceID="AccessDataSource1"
            ForeColor="#333333" Width="298px" DataKeyField="Id">
            <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
            <SelectedItemStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
            <ItemTemplate>
                <b><asp:Label ID="OverskriftLabel" runat="server" Text='<%# Eval("Overskrift") %>'></asp:Label></b>
                <br />
                <asp:Label ID="TekstLabel" runat="server" Text='<%# Eval("Tekst") %>'></asp:Label><br />
br /><br />
            </ItemTemplate>
            <AlternatingItemStyle BackColor="White" />
            <ItemStyle BackColor="#E3EAEB" />
            <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        </asp:DataList><asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/xxx.mdb"
            SelectCommand="SELECT * FROM [xxx] WHERE ([Id] = ?)">
            <SelectParameters>
                <asp:QueryStringParameter DefaultValue="1" Name="Id" QueryStringField="Id" Type="Int32" />
            </SelectParameters>
        </asp:AccessDataSource>
    </div>
    </form>

Problemet ligger i at den kun udskriver den øverste linje fra tabellen af.. Dvs. den laver ikke afsnit som den gerne skulle :/

Hvordan løser jeg dette problem?
Avatar billede aaberg Nybegynder
30. november 2008 - 11:32 #1
I din SQL Query, specificere du at du kun vil hente rows med Id = 1, hvilket højest sandsynligt er den første række.

Skift din query ud med "SELECT * FROM [xxx]", og fjern <SelectParameters> området.
Avatar billede doncarnage Nybegynder
30. november 2008 - 15:53 #2
Det har ikke noget med det at gøre ;) Det er pga. det er lavet som en slags nyhedssystem, hvor den henter den nyhed som man linker til..
Avatar billede aaberg Nybegynder
30. november 2008 - 19:58 #3
Da forstår jeg ikke dit problem! Du skriver at problemet er, at den kun finder den øverste row fra din tabel. Jeg går ud fra at den kode du angiver i dit spørgsmål, er koden som skal finde alle rows, eller? Men uanset hvad, så finder koden du angiver kun 1 row, og det er på grund av SQL querien i AccessDataSource1. Hvis det er meningen den kun skal finde 1 row, så tror jeg du må forklare dit problem lidt bedre.
Avatar billede doncarnage Nybegynder
30. november 2008 - 20:08 #4
Jeg skriver ikke at den kun udskriver den øverste row, men den øverste "linje".. Det skal forståes på den måde at hvis jeg indtaster følgende i tabellen:

Hej...
Her er linjeskift..
Sejt!

Så udskriver den "Hej... Her er linjeskift.. Sejt!"
Her undlader den helt at udskrive afsnittene :(

Det er i øvrigt meningen at den kun skal finde en row, da den henter id på siden med xxx.aspx?id=xxx i titlen, så det fungerer som det skal..
Avatar billede aaberg Nybegynder
30. november 2008 - 20:40 #5
Nu forstår jeg dit problem :-)

Det har sikkert noget at gøre med, at linjeskift bliver ignoreret i html. For at lave et linjeskift, bliver du nød til at sætte "<br />" ind.

Prøv at skifte alle linjeskift ud med "<br />".
Text='<%# Eval("Tekst").Replace(Environment.NewLine, "<br />" %>'

Jeg har ikke testet det, men det er da et forsøg hvert.
Avatar billede aaberg Nybegynder
30. november 2008 - 20:41 #6
Der mangler lige en parantes-slut, så jeg prøver igen.

Text='<%# Eval("Tekst").Replace(Environment.NewLine, "<br />") %>'
Avatar billede doncarnage Nybegynder
30. november 2008 - 21:30 #7
Jeg tror også det er der problemet ligger, men ved ikke lige hvordan jeg skal fixe det :/

Når jeg prøver med det du skrev får jeg følgende fejl:

'object' does not contain a definition for 'Replace'
Avatar billede aaberg Nybegynder
30. november 2008 - 22:29 #8
Ok, prøv:

Text='<%# ((string)Eval("Tekst")).Replace(Environment.NewLine, "<br />") %>'
Avatar billede doncarnage Nybegynder
30. november 2008 - 23:14 #9
Du er sgu en skat ;) Det virker så jeg bukker og takker mange gange!
Avatar billede aaberg Nybegynder
01. december 2008 - 08:26 #10
:-D
Avatar billede doncarnage Nybegynder
02. december 2008 - 18:48 #11
aaberg_cc

Jeg ved ikke om du stadig er der eller om du kan læse det her, men jeg prøver alligevel :D Jeg har i stedet for datalist gået over til at kode det hele selv i codebehind filen og udskrive gennem labels, da jeg har meget bedre kontrol over tingene og lettere kan gøre som det passer mig :)

Jeg er dog stødt på samme problem igen nu - den udskriver ikke afsnit.. Du skulle vel ikke vide hvordan jeg får det replacet denne her gang også :D?

Koden ser ud som her:
lblUdskriv.Text = Convert.ToString(objDataReader["Tekst"];
Avatar billede doncarnage Nybegynder
02. december 2008 - 18:52 #12
Haha okay nevermind.. Jeg fandt ud af det på :)

Det viste sig at jeg havde glemt et punktum i måden jeg forsøgte på, som så gjorde at det hele fuckede op :D
Avatar billede aaberg Nybegynder
02. december 2008 - 21:13 #13
:-)
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