Avatar billede kischi Novice
14. januar 2009 - 20:45 Der er 6 kommentarer og
1 løsning

Compilation Error

Hej jeg prøver at kunne klikke på et link men når jeg klikker på det for at komme til en anden side. Så får jeg bare en fejl.

I kan se det på:
http://radio.web.surftown.dk/admin/vis_om.aspx

og så klik på rediger.

form ser sådan ud:
Titel: <asp:TextBox ID="titel" runat="server" Width="300px"></asp:TextBox><br /><br />
Text:<br /><textarea id="tekst" cols="35" runat="server" rows="7"></textarea><br />
    <asp:Button ID="opdater" runat="server" Text="opdater" OnClick="opdater_Click"/>

og min kode på codebehind ser sådan ud:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            SqlCommand objcmd = new SqlCommand();
            objcmd.Connection = objconn;
            objcmd.CommandType = CommandType.Text;
            objcmd.CommandText = "SELECT * FROM OM WHERE id = @id";
            objcmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);

            SqlDataReader reader = null;

            objconn.Open();

            reader = objcmd.ExecuteReader();

            if (reader.Read())
            {
                titel.Text = reader["titel"].ToString();
                tekst.Value = reader["txt"].ToString();
            }

            objconn.Close();
       
        }     
    }

    protected void opdater_Click(object sender, EventArgs e)
    {
        SqlCommand objcmd = new SqlCommand();
        objcmd.Connection = objconn;

        objcmd.CommandText = "UPDATE OM SET titel = @felt, txt = @txt WHERE id = @id";
        objcmd.Parameters.AddWithValue("@felt", titel.Text);
        objcmd.Parameters.AddWithValue("@txt", tekst.Value);
        objcmd.Parameters.AddWithValue("id", Request.QueryString["id"]);

        objconn.Open();

        objcmd.ExecuteNonQuery();

        objconn.Close();
    }
 
}

Jeg har lavet det på en anden side, og der virker det, så jeg tror bare det er en lille fejl jeg har overset. Men jeg kan simpelthen ikke se den.
Jeg håber det vil hjælpe at få nogle andre øjne på det?

Mvh. Adam
Avatar billede erikjacobsen Ekspert
14. januar 2009 - 21:13 #1
Du skal vel bruge en ASP.NET dims, der gør det ud for et textarea - ikke et HTML textarea. Kan det passe det er en asp:textbox med noget multiline ...?
Avatar billede kischi Novice
14. januar 2009 - 22:13 #2
Det har jeg lige prøvet, men det virker ikke.
Jeg har gjort det før så det virker, og jeg synes jeg har gjort det samme nu, men det vil bare ikke virker.

Her er min kode som virker, bare hvor den forbinder til en anden tabel i databasen:

Form:

Tid: <asp:TextBox ID="tid" runat="server" Width="300px"></asp:TextBox><br /><br />
Text:<br /><textarea id="tekst" cols="35" runat="server" rows="7"></textarea><br />
    <asp:Button ID="opdater" runat="server" Text="opdater" OnClick="opdater_Click"/><br />

Codebehind:

public partial class admin_rediger_program : System.Web.UI.Page
{
    SqlConnection objconn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ToString());


    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            SqlCommand objcmd = new SqlCommand();
            objcmd.Connection = objconn;
            objcmd.CommandType = CommandType.Text;
            objcmd.CommandText = "SELECT * FROM PROGRAM WHERE id = @id";
            objcmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);

            SqlDataReader reader = null;

            objconn.Open();

            reader = objcmd.ExecuteReader();

            if (reader.Read())
            {
                tid.Text = reader["tid"].ToString();
                tekst.Value = reader["txt"].ToString();
            }

            objconn.Close();
        }


    }

    protected void opdater_Click(object sender, EventArgs e)
    {
        SqlCommand objcmd = new SqlCommand();
        objcmd.Connection = objconn;

        objcmd.CommandText = "UPDATE PROGRAM SET tid = @felt, txt = @txt WHERE id = @id";
        objcmd.Parameters.AddWithValue("@felt", tid.Text);
        objcmd.Parameters.AddWithValue("@txt", tekst.Value);
        objcmd.Parameters.AddWithValue("id", Request.QueryString["id"]);

        objconn.Open();

        objcmd.ExecuteNonQuery();

        objconn.Close();

        fuldført.Text = "Du har nu redigeret posten";
    }
}

Jeg synes de er stort set identiske, men jeg kan ikke finde ud af hvad der er i denne kode som mangler i den anden.
Denne kode virker fint.
????
Mvh. Adam
Avatar billede kischi Novice
15. januar 2009 - 01:37 #3
Nu virker det. Jeg slettede bare min kode og skrev det igen.
Jeg kunne simpelt hen ikke finde fejlen. Men nu virker det.
Så nogle gange hjælper det bare at starte forfra :-D
Avatar billede Syska Mester
15. januar 2009 - 14:30 #4
Hej igen Adam.

Jeg ser dig igen og igen ... rode rundt med ASP.NET server controls og alm html controls.

<asp:TextBox ID="tid" runat="server" Width="300px" />
er ikke det samme som:
<textarea id="tekst" cols="35" runat="server" rows="7" />

Første er en ASP.NET control

Sidste er en html control og den kan du ikke få fat i fra Codebehind. Der skal du lave den som:
<asp:TextBox ID="tid" runat="server" Width="300px" Height="100px" Mode="Multiline" />
( ikke sikker på MultiLine property, men noget i den retning )

Håber det kan bruges ... så du undgår disse kedelige fejl.
Avatar billede kischi Novice
15. januar 2009 - 14:33 #5
Nå ok, så forstår jeg bedre. Tak for hjælpen.
Jeg må bare lære at skældne imellem .net controls og html. :-D
Avatar billede Syska Mester
15. januar 2009 - 15:38 #6
You do that ...

ellers tror jeg der kommer flere spm her :-)

Samme problem du nok havde med Upload af fil i dit andet spm.
Avatar billede kischi Novice
25. januar 2011 - 16:57 #7
Så lukker jeg lige her
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
Computerworld tilbyder specialiserede kurser i database-management

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