Avatar billede bech1992 Nybegynder
06. april 2011 - 09:02 Der er 9 kommentarer og
1 løsning

Hent data fra database

Hej Eksperter
Jeg håber i kan hjælpe mig med dette, da det er MEGET vigtigt at jeg får det til at virke:)

Jeg har downloaded CKEditor, og har også fået det til at virke, så man kan gemme det tekst man har skrevet deri, i databasen,
men jeg kan ikke få editoren til at hente teksten ud fra databasen, har prøvet at lægge den i en datalist, men så kan jeg ikke gemme den den, da den skriver at den ikke kan finde CKEditor1.Text
fx. Jeg har skrevet en nyhed, men finder ud af at jeg har lavet en stavefejl, så klikker jeg på nyheden og bliver ført videre til en side hvor editoren er, og teksten fra den pågældende nyhed står allerede deri, så man nemt og hurtigt kan redigere det.

min kode ser således ud:

Edit.aspx:


<%@ Page Title="" Language="C#" MasterPageFile="~/admin/MasterAdmin.master" AutoEventWireup="true"
    CodeFile="EditContry.aspx.cs" Inherits="EditContry" %>
<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
   
        <div id="test">
            <asp:DataList ID="dlDefault" runat="server">
                <ItemTemplate>
                    <CKEditor:CKEditorControl ID="CKEditor1" runat="server" Text='<%#Eval("CountryDescription") %>'>
                    </CKEditor:CKEditorControl>
                </ItemTemplate>
            </asp:DataList>
            <asp:Button ID="btnSave" Text="Gem" runat="server" OnClick="btnSave_Click" />
    </div>
</asp:Content>



Code behind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataSetTableAdapters;

public partial class EditContry : System.Web.UI.Page
{
    CountryTableAdapter c = new CountryTableAdapter();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetID();
        }
    }

    protected void GetID()
    {

        int id = Convert.ToInt32(Request.QueryString["Edit"]);
        dlDefault.DataSource = c.GetCountryByCountryID(id);
        dlDefault.DataBind();

    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        int id = Convert.ToInt32(Request.QueryString["Edit"]);
        c.UpdateDescription(CKEditor1.Text, (id));
    }
}


Kunne forestille mig at man skulle bruge en findcontrol, men kan bare ikke finde ud af hvordan
Avatar billede Syska Mester
06. april 2011 - 10:00 #1
Loop over alle din items i din DataList ... og i de enkelte elementer, skal du så bruge FindControl.

Håber det giver mening.

mvh
Avatar billede bech1992 Nybegynder
06. april 2011 - 10:07 #2
Hej buzzzz

kan du evt. give lidt kodeeksempler, da jeg virkelig ikke kan få det til at virke:)

på forhånd tak
Avatar billede Syska Mester
06. april 2011 - 10:14 #3
foreach (DataListItem item in dlDefault.Items)
        {
            CKEditorControl fck = item.FindControl("CKEditor1") as CKEditorControl; // Jeg håber typen er rigtig.
        }
Avatar billede bech1992 Nybegynder
06. april 2011 - 10:56 #4
Har prøvet at sætte det ind sådan her:
code behind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataSetTableAdapters;

public partial class EditContry : System.Web.UI.Page
{
    CountryTableAdapter c = new CountryTableAdapter();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetID();

            Page.Title = "Rediger";
        }
    }

    protected void GetID()
    {
        foreach (DataListItem item in dlDefault.Items)
        {
            CKEditorControl fck = item.FindControl("CKEditor1") as CKEditorControl; // Jeg håber typen er rigtig.
        }

        int id = Convert.ToInt32(Request.QueryString["Edit"]);
        dlDefault.DataSource = c.GetCountryByCountryID(id);
        dlDefault.DataBind();

    }


    protected void btnSave_Click(object sender, EventArgs e)
    {
        int id = Convert.ToInt32(Request.QueryString["Edit"]);
        c.UpdateCountryDescription(CKEditor1.Text, (id));

    }
}

men får fejlen:
Error The type or namespace name 'CKEditorControl' could not be found (are you missing a using directive or an assembly reference?)
Avatar billede Syska Mester
06. april 2011 - 11:08 #5
Overstående kode skal bruges når du skal gemme.

Virker som om du har en side med flere "lande" på ...

Så du skal vel også have flere ID'er ud.

Lige nu virker det som om den tidligere har været lavet til kun at edit et land, korrekt ?

mvh
Avatar billede bech1992 Nybegynder
06. april 2011 - 11:18 #6
Det er kun et land på den pågældende side, ID'et får den fra url'en

Så hvis fx. url'en hedder www.minside.dk/DistinationsDetail.aspx?Edit=12

Så henter den landet ud med ID'et 12,
Så den side jeg har vist her har kun en editor en og save knap, og så skulle editoren gerne hente data  fra "country" tabellen hvor ID'et ==12 I det her tilfælde.

har prøvet at rodde lidt med det, men får hele tiden samme fejl:
Error The type or namespace name 'CKEditorControl' could not be found
(are you missing a using directive or an assembly reference?)
Avatar billede Syska Mester
06. april 2011 - 11:25 #7
Du mangler et using statement i toppen ala:
using EKEditor.Something.Someelse;

Men hvis du kun har et land, hvorfor vil du så bruge en DataList ?
Avatar billede bech1992 Nybegynder
06. april 2011 - 12:18 #8
Buzzzz
TUSINDE TUSINDE TAK:)

Så kunne jeg få det til at virke:)

Jeg er meget dårlig til .Net prøver mig stadig frem:P hehe, hvad ville du ellers bruge? når nu jeg skal databinde Editoren?

Smid lige et svar og få dine point :)

Mvh Jeppe
Avatar billede Syska Mester
06. april 2011 - 12:51 #9
svar.

Pas, godt spm.

Noget ala:
CKEditor1.Text = c.GetCountryByCountryID(id).CountryDescription;

I stedet for det databinding du har lige nu.

mvh
Avatar billede bech1992 Nybegynder
06. april 2011 - 13:00 #10
Tak for svar, jeg vil prøve mig lidt frem :D
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