Avatar billede kischi Novice
22. januar 2009 - 17:16 Der er 7 kommentarer og
1 løsning

replace <br>

Hej Jeg har før gjort så hvis man skriver noget i et tekst felt så når man trykker på enter laver den en <br> i databasen eller ómvendt.

Men nu har jeg noget kode som ser anderledes ud, som skal ændre <br> til newline når jeg trækker det ud af databasen.

Min replace kode ser sådan ud:

.Replace(Environment.NewLine, "<br />")

og koden jeg skal indsætte det i ser sådan ud:

protected void Page_Load(object sender, EventArgs e)
    {
        GetOmRadioJazz();
        if (Request.QueryString["task"] != null)

            switch (Request.QueryString["task"].ToString())
            {
                case "edit":
                    //do
                    break;
                case "delete":
                    DeleteChannel(Request.QueryString["id"]);
                    GetOmRadioJazz();
                    //do
                    break;

            }
            }

    private void GetOmRadioJazz()
    {
        SqlCommand objcmd = new SqlCommand();
        objcmd.Connection = objconn;
        objcmd.CommandType = CommandType.Text;
        objcmd.CommandText = "SELECT * FROM OM";
        SqlDataReader reader = null;

        objconn.Open();

        reader = objcmd.ExecuteReader();
        om.DataSource = reader;
        om.DataBind();

        objconn.Close();
    }

    private void DeleteChannel(object id)
    {
        SqlCommand objcmd = new SqlCommand();
        objcmd.Connection = objconn;
        objcmd.CommandText = "DELETE FROM OM WHERE id = @id";
        objcmd.Parameters.AddWithValue("@id", id.ToString());
        objconn.Open();

        objcmd.ExecuteNonQuery();
       
        objconn.Close();
   
    }

men jeg ved ikke helt hvor i koden linjen skal sættes ind.
Håber nogle kan hjælpe mig?

Mvh. Adam
Avatar billede keysersoze Guru
22. januar 2009 - 17:30 #1
det er umiddelbart en dårlig idé at ændre brugerens input inden det ryger i databasen - gør du det, altså gemmer fx <br> i databasen, vil det fx betyde at indholdet bliver ubrugeligt til andet end web og det _kunne_ jo være at det pludselig blev relevant, så undlad at formattere bruger-input før du skal bruge det i det relevante miljø.

Der er ingen steder i ovenstående kode du kan benytte din replace - du databinder til en kontrol, om, og det er et sted hér du skal køre din replace.
Avatar billede kischi Novice
22. januar 2009 - 17:47 #2
Ok, men så hvis jeg ikke ændre det til <br> før jeg lægger det ind i databasen.
Men kun gør det når jeg laver udtrækket.
Så er der da ikke lavet <br> i databasen og ergo ved siden hvor udtrækket skal ske da ikke hvor den skal lave <br> fordi den registrere jo ikke hvor brugeren har trykker enter.
Gør den?

dette er min kode som lægges ind på db med replace:

SqlConnection objconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ToString());

        SqlCommand objcmd = new SqlCommand();
        objcmd.CommandType = CommandType.Text;
        objcmd.Connection = objconn;

        objcmd.CommandText = "INSERT INTO TEKNIKKERE(navn)VALUES (@navn)";
        objcmd.Parameters.AddWithValue("@navn", navn.Value.Replace(Environment.NewLine, "<br />"));

        objconn.Open();

        objcmd.ExecuteNonQuery();

        objconn.Close();

og dette er koden hvor jeg trækker det ud:

SqlCommand objcmd = new SqlCommand();
        objcmd.Connection = objconn;
        objcmd.CommandType = CommandType.Text;
        objcmd.CommandText = "SELECT * FROM TEKNIKKERE";

        SqlDataReader reader = null;

        objconn.Open();

        reader = objcmd.ExecuteReader();
        teknikkere.DataSource = reader;
        teknikkere.DataBind();

        objconn.Close();

hvordan ville jeg da så skulle bede den om at lave <br> der hvor brugeren har trykket enter i textarea?

Mvh. Adam
Avatar billede keysersoze Guru
22. januar 2009 - 18:33 #3
jo - du vil kunne køre præcis samme replace. Hvis du underlader replace i din insert og kigger i databasen vil du kunne se nogle underlige tegn (formentlig noget i retning af ||) - så du vil få præcis samme resultat. Skal du så en dag bruge dataene i et andet miljø end på web vil du kunne genbruge dataene men bare replace med noget andet end <br>.
Avatar billede kischi Novice
23. januar 2009 - 01:27 #4
Ja, når jeg kigger i databasen, er det rigtigt at der er nogle underlige tegn (firkanter) men min replace virker ikke, jeg tror mulighvis at jeg har sat min replace ind det forkerte sted.

Jeg satte den ind her:

objcmd.CommandText = "SELECT * FROM TEKNIKKERE".Replace(Environment.NewLine, "<br />");

Hvor burde den ellers være?
Avatar billede keysersoze Guru
23. januar 2009 - 02:06 #5
din replace skal køre på den string der indeholder teksten - og det må være din kontrol "om" der gør det og det kan du se i din designfil. Når du databinder som du gør sker det ikke i din codebehind-fil.
Avatar billede kischi Novice
23. januar 2009 - 02:21 #6
Ok jeg tror jeg har forstået det rigtigt, at min replace skal være på min repeater på aspx siden.
Men det virker ikke som jeg har skrevet det.

Nu ser det eller sådan ud på aspx siden:

<asp:Repeater ID="teknikkere"  runat="server">
    <ItemTemplate>
    <%# Eval("navn".Replace(Environment.NewLine, "<br />"))%><br />
    </ItemTemplate>
   
    </asp:Repeater>

?
Avatar billede kischi Novice
23. januar 2009 - 02:34 #7
Hej Igen,

Nu fik jeg det til at virker, jeg skulle bare skrive. .Tostring før replace :-D

Tak for svarende.
Avatar billede keysersoze Guru
23. januar 2009 - 10:35 #8
det var godt at høre :)
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