Avatar billede Kim Neesgaard Seniormester
27. september 2005 - 20:56 Der er 20 kommentarer og
1 løsning

Formattering af et Access memofelt i et datagrid

Jeg har et tekstfelt på en formular og gemmer indholdet af tekstfeltet i et Access memofelt. Hvis jeg indsætter et linieskift som dette fra formularen:

Linie 1
Linie 2

og gemmer det, så viser det sig som

Linie 1 Linie 2

når samme memofelt vises i et datagrid. Hvis jeg slår memofeltet op direkte i Access, så har det husket linieskiftet.

Hvordan kan man få datagriddet til at vise to linier i stedet for een?
Avatar billede jokkejensen Novice
27. september 2005 - 21:17 #1
erstat VbCrLf eller \n med <br> kan ikke lige huske hvilken, men højst sandsynligt VbCrLf..

Mvh
Avatar billede Kim Neesgaard Seniormester
27. september 2005 - 22:28 #2
Skal man gøre dette programmæssigt mellem at bruger har indtastet i tekstfeltet og til tekst gemmes i Access databasen?
Avatar billede jokkejensen Novice
27. september 2005 - 22:44 #3
Hvis du har et textarea er det lettest at erstatte \n med <br> før du gemmer i DB, men ønsker du ikke html i din database er den eneste måde at gøre det bagefter..

Jeg plejer at smide html i database, men det er ikke løsningen hvis dataen skal bruges andetsteds. Men arbejder selv kun med webforms.

http://www.google.dk/search?hl=da&q=replace+%2Bmemo+%2Bnewline+with+%2B%22%3Cbr%3E%22+%2Basp.net&meta=

Her er lidt..

Mvh
Avatar billede Kim Neesgaard Seniormester
27. september 2005 - 23:59 #4
Hvis man ikke vil have HTML i databasen, skal tegnene erstattes før de sendes til datagriddet og det må vel så være i det dataset, der sendes til datagriddet. Ved du, hvordan man konkret ville kunne gøre det?
Avatar billede davidfossil Nybegynder
29. september 2005 - 21:55 #5
Jeg ser to løsninger:

1. Tilføj en ny kolonne til din DataTable, med en expression som automatisk omskriver værdien fra den oprindelige kolonne.

2. Løb igennem datatabellen og ret værdien i de pågældende felt.
foreach (DataRow dr in dtResults.Rows)
  dr["felt"] = ((string)dr["felt"]).Replace(Environment.Newlin, "<br />")

Begge dele kan gøres umiddelbart inden du databinder til dit grid.
Avatar billede davidfossil Nybegynder
29. september 2005 - 21:55 #6
"Begge dele" skal selvfølgelig forstås som "enten den ene eller anden løsning" :o)
Avatar billede Kim Neesgaard Seniormester
29. september 2005 - 22:06 #7
Skal dtResults.Rows skrives som det står her eller skal dtResults defineres? Hvis ja, hvordan gør man det?
Avatar billede davidfossil Nybegynder
30. september 2005 - 11:26 #8
I mit eksempel ved dtResults navnet på den DataTable som du har din data i. Hvordan får du data ud af din database? Smid evt. de linjers kode hvor du databinder dit DataGrid.
Avatar billede Kim Neesgaard Seniormester
01. oktober 2005 - 18:13 #9
Jeg gør sådan (den eneste måde jeg kan!):

Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("/data/A-Nees.mdb") & ";")
objConn.Open()

Dim SQLTekst As OleDbCommand
Dim ds As OleDbDataReader
Dim strSQL As String

strSQL = "SELECT ...."
SQLTekst = New OleDbCommand(strSQL, objConn)
ds = SQLTekst.ExecuteReader()
DGOrdliste.DataSource = ds
DGOrdliste.DataBind()
Avatar billede davidfossil Nybegynder
03. oktober 2005 - 21:37 #10
Ok - jeg løfter normalt min data op i en DataTable, hvilket (IMO) gør det lettere at manipulere med data'en.

Er ikke selv hjemmevandt i VB.NET, men forsøger lige:


Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("/data/A-Nees.mdb") & ";")
objConn.Open()

Dim dataSet As New DataSet()
Dim adapt As New OleDb.OleDbDataAdapter()
Dim strSQL As String

strSQL = "SELECT ...."

adapt.SelectCommand = New OleDbCommand(strSQL, objConn)
adapt.Fill(dataSet)

' Nu har vi vores data liggende i et DataSet, og kan lege med det...
Dim dataTable As DataTable() = dataSet.Tables[0]
For Each DataRow row in dataTable.Rows
    dataTable["memoFelt"] = CType(dataTable["memoFelt"], String).Replace(Environment.NewLine, "<br />")
Next

DGOrdliste.DataSource = dataTable
DGOrdliste.DataBind()


Håber det virker :)
Avatar billede Kim Neesgaard Seniormester
04. oktober 2005 - 19:18 #11
Nu har jeg prøvet - den giver fejl på denne linie:

Dim dataTablex As DataTable() = dataSetx.Tables[0]

Jeg har tilføjet et 'x', da den brokkede sig over genbrug af ord.

Fejlmeldingen er: Compiler Error Message: BC30203: Identifier expected.
Avatar billede davidfossil Nybegynder
04. oktober 2005 - 22:50 #12
Hmm, måske er syntaksen sådan her i VB (klammer udskiftet med parantes):

Dim dataTablex As DataTable() = dataSetx.Tables(0)
Avatar billede Kim Neesgaard Seniormester
05. oktober 2005 - 16:52 #13
Der sker i hvert fald en ændring i besked:

BC30311: Value of type 'System.Data.DataTable' cannot be converted to '1-dimensional array of System.Data.DataTable'.

Kan du se, hvad der er galt?
Avatar billede davidfossil Nybegynder
13. oktober 2005 - 22:39 #14
Jeg kender som sagt intet til VB, men jeg giver da at bud mere:
Dim dataTablex As DataTable = dataSetx.Tables(0)

Hvordan plejer man at deklerere en variable i VB !?
Avatar billede jokkejensen Novice
13. oktober 2005 - 23:29 #15
Dim dt As DataTable = New DataTable(dataSetx.Tables(0))

Tager første table i datasettet..
Avatar billede jokkejensen Novice
13. oktober 2005 - 23:29 #16
mit VB.net er også lidt rådent.. men det burde være sådan..
Avatar billede davidfossil Nybegynder
01. november 2005 - 21:40 #17
jokke > som jeg læser det du skriver, giver du constructoren til DataTable en DataTable som parameter...?
Avatar billede stinejh1980 Nybegynder
23. februar 2007 - 08:46 #18
Jeg ved det er en gammel nyhed, men jeg tænkte at jeg ville give min viden videre, HVIS DER ER NOGEN SOM KAN BRUGE DEN :-)

Jeg henter data fra Dn op i en dynamisk tabel på min nyheds side.

Tabellens format er så ledes:

<table>
<tr><td>[dato]</td></tr>
<tr><td>[Overskrift]</td></tr>
<tr><td>[intro]td></tr>
<tr><td>[Text]</td></tr>
</table>

For at få det korrekte format fra Db med linie skift og det hele skriver jeg således når jeg generere min tabel:

        MyConnection.Open()
        MyCommand = New OleDbCommand
        MySQL = "SELECT * FROM News_tbl WHERE News_tbl.NewsID=" & viewstate("NewsID") & ";"
        'Response.Write(MySQL)
        MyCommand.CommandText = MySQL
        MyCommand.Connection = MyConnection
        MyReader = MyCommand.ExecuteReader
        While MyReader.Read


            'smid rækken ind i tabellen
            Table.Rows.Add(TblRow)
            'skriv noget i cellen
            TblCell.Text = MyReader("NewsDate")
            TblCell.CssClass = "NewsDate"
            'tilføj cellen til rækken
            TblRow.Cells.Add(TblCell)

            'og du kan self. fortsætte
            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = MyReader("Headline")
            TblCell.CssClass = "NewsHeadline"
            TblRow.Cells.Add(TblCell)
            Table.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = MyReader("Teaser")
            TblRow.Cells.Add(TblCell)
            Table.Rows.Add(TblRow)

            TblRow = New TableRow
            TblCell = New TableCell
            TblCell.Text = CType(MyReader("NewsText"), String).Replace(Environment.NewLine, "<br />")
            TblRow.Cells.Add(TblCell)
            Table.Rows.Add(TblRow)

            'til sidst kan du så lægge tabellen ind i din placeholde på siden
            PHNewsDetails.Controls.Add(Table)

        End While
        MyConnection.Close()
Avatar billede Kim Neesgaard Seniormester
06. marts 2007 - 21:47 #19
elvstine -> Mange tak for dit input! Det er rart at kunne slå op i efterfølgende.
Avatar billede Kim Neesgaard Seniormester
19. december 2010 - 16:43 #20
elvstine -> vil du lægge et svar, så jeg kan afslutte?
Avatar billede stinejh1980 Nybegynder
20. december 2010 - 13:08 #21
Svar :-)
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