Oprettet ons. d. 11. april 2007 kl. 12:45:05

ameq
ameq (13.328 point. Point ude: 615)

RequiredFieldValidator kan vist ikke finde min control

Hej E

1) Jeg har en metode hvor jeg opbygget noget layout i en webpart.

2) Alle mine control (tekstbokse og knapper) tilføjer jeg i min CreateChildControls()

Men i den her metode hvor jeg opbygger mit layout i tilføjer jeg en RequiredFieldValidator til visse af mine kontroller.

RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator();
                requiredFieldValidator.ControlToValidate = TargetControl.UniqueID;
                requiredFieldValidator.ValidationGroup = "DebatValidationGroup";
                requiredFieldValidator.Display = ValidatorDisplay.Dynamic;
                requiredFieldValidator.ErrorMessage = "*";
                this.Controls.Add(requiredFieldValidator);
                rightLabel.Controls.Add(requiredFieldValidator);
Men når jeg kører min kode får jeg den her fejl:

System.Web.HttpException: Unable to find control id 'DebatFirstName' referenced by the 'ControlToValidate' property of ''. at System.Web.UI.WebControls.BaseValidator.CheckControlValidationProperty(String name, String propertyName) at System.Web.UI.WebControls.BaseValidator.ControlPropertiesValid() at System.Web.UI.WebControls.BaseValidator.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.AddedControl(Control control, Int32 index) at System.Web.UI.ControlCollection.Add(Control child)

Det virker som om at min requiredFieldValidator ikke kan finde min tekstboks og jeg tror måske fordi at jeg tilføjer den i CreateChildControls().

En som har et bud på hvordan jeg retter den her fejl?

Skrevet ons. d. 11. april 2007 kl. 17:17:03| #1

snepnet
snepnet (87.110 point)
Er din tekstboks (TargetControl) indsat i kontroltræet på det tidspunkt den kode du har vist bliver kørt?
(ellers prøv at sørg for at det er gjort).
Er det med vilje at du indsætter validatoren 2 gange?
Mvh

Skrevet ons. d. 11. april 2007 kl. 17:25:43| #2

ameq
ameq (13.328 point)
Min TargetControl skulle meget gerne være i træet, for den her metode bliver kaldt nede i Render metoden

this.Controls.Add(requiredFieldValidator);
rightLabel.Controls.Add(requiredFieldValidator);

Bliver begge tilføjet i kontrol træet der?

Skrevet ons. d. 11. april 2007 kl. 20:46:58| #3

snepnet
snepnet (87.110 point)
Du tilføjer requiredFieldValidator til egen controlcollection OG til din rightLabel... Det ser underligt ud.
Kan du vise mig lidt kode der vedrører TargetControl?
Mvh

Skrevet tor. d. 12. april 2007 kl. 07:57:16| #4

ameq
ameq (13.328 point)
protected override void CreateChildControls()
debatTitle = new TextBox();
debatTitle.ID = "DebatTitle";

debatText = new TextBox();
debatText.ID = "DebatText";
debatText.TextMode = TextBoxMode.MultiLine;

debatFirstName = new TextBox();
debatFirstName.ID = "DebatFirstName";

debatLastName = new TextBox();
debatLastName.ID = "DebatLastName";

buttonSaveComment = new Button();
buttonSaveComment.ID = "DebatSaveComment";
buttonSaveComment.Click += new EventHandler(DebatSaveCommentClick);
buttonSaveComment.Text = "Save and stuff";

this.Controls.Add(debatTitle);
this.Controls.Add(debatText);
this.Controls.Add(debatFirstName);
this.Controls.Add(debatLastName);
this.Controls.Add(buttonSaveComment);


protected override void Render(HtmlTextWriter writer)
BuildRow("First Name", debatFirstName, true);
o.s.v med de forskellige kontroller

private Panel BuildRow(string Text, WebControl TargetControl, bool AddValidator)
{
            Panel controlPanelWrapper = new Panel();
           
            Label leftLabel = new Label();
            leftLabel.CssClass = "LeftColm";
            leftLabel.Text = Text + " " + TargetControl.UniqueID;
            controlPanelWrapper.Controls.Add(leftLabel);

            Label rightLabel = new Label();
            rightLabel.CssClass = "RightColm";
            rightLabel.Controls.Add(TargetControl);
           
            if (AddValidator)
            {
                RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator();
                requiredFieldValidator.ControlToValidate = TargetControl.UniqueID;
                requiredFieldValidator.ValidationGroup = "DebatValidationGroup";
                requiredFieldValidator.Display = ValidatorDisplay.Dynamic;
                requiredFieldValidator.ErrorMessage = "*";
                this.Controls.Add(requiredFieldValidator);
                rightLabel.Controls.Add(requiredFieldValidator);
            }
            controlPanelWrapper.Controls.Add(rightLabel);

            return controlPanelWrapper;
        }

Det skulle vist være det

Skrevet tor. d. 12. april 2007 kl. 10:49:32| #5

snepnet
snepnet (87.110 point)
Prøv ekplicit at giv tekstboksen et navn - og sørg for at din kontrol impementerer inamingcontainer (tomt interface).

Sådan noget her fungerer fint nok:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected override void OnInit(EventArgs e)
    {
        SomeControl c = new SomeControl();
        c.ButtonClick += c_ButtonClick;
        form1.Controls.Add(c);
        base.OnInit(e);
    }

    void c_ButtonClick(object sender, EventArgs e)
    {
        Response.Write("KLIK");
    }
}

public class SomeControl : Control, INamingContainer
{
    public event EventHandler ButtonClick;

    protected virtual void OnButtonClick(EventArgs e)
    {
        if (ButtonClick != null)
            ButtonClick(this, e);
    }

    protected override void CreateChildControls()
    {
        TextBox tb = new TextBox();
        tb.ID = "input";
        Controls.Add(tb);
       
        RequiredFieldValidator validator = new RequiredFieldValidator();
        validator.Text = "!!!";
        validator.ControlToValidate = "input";
        Controls.Add(validator);

        Button btn = new Button();
        btn.Text = "Klik her";
        btn.Click += btn_Click;
        Controls.Add(btn);
       
        base.CreateChildControls();
    }

    void btn_Click(object sender, EventArgs e)
    {
        OnButtonClick(EventArgs.Empty);
    }
}

Mvh

Skrevet tor. d. 12. april 2007 kl. 10:54:43| #6

ameq
ameq (13.328 point)
Så det du vil anbefalde er at jeg laver min egen tekstboks kontrol hvor jeg selv tilføjer en RequiredFieldValidator ?

Skrevet tor. d. 12. april 2007 kl. 11:14:01| #7

snepnet
snepnet (87.110 point)
Øh næh... Det var nu ikke pointen. Det var bare dem med at give den et id selv, og koden fik du bare så du havde noget der virkede, og som dynamisk indsatte en textbox og en validator til samme.
Mvh

Skrevet tor. d. 12. april 2007 kl. 11:28:17| #8

ameq
ameq (13.328 point)
okey, så har jeg lidt svært ved at se forskellen på resultatet af din og min kode ud over ud at du bruger INamingContainer, men den kan jeg ikke huske om jeg har impementet

Skrevet tor. d. 12. april 2007 kl. 12:37:40| #9

snepnet
snepnet (87.110 point)
Jeg sætter id'et på min tekstboks eksplicit:
tb.ID = "input";
Og benytter det navn til validatoren:
validator.ControlToValidate = "input";
Mvh

Skrevet tor. d. 12. april 2007 kl. 12:41:36| #10

ameq
ameq (13.328 point)
okey, det gøre jeg så også i min hjemme lavet TextBoxRequiredFieldValidator kontrol

Skrevet tor. d. 12. april 2007 kl. 13:11:55| #11

snepnet
snepnet (87.110 point)
Jep - prøv det.
Mvh

Skrevet tor. d. 12. april 2007 kl. 13:35:23| #12

ameq
ameq (13.328 point)
Du må lige hjælp mig her
Jeg har fået lavet min kontrol men når jeg skal tilgå property på den f.eks. TextBox.TextMode så får jeg en fejl om at min tekstbok "TextBox" er null. Hvad gør jeg lige forkert her?

public class TextboxAndRequiredFieldValidator : WebControl, INamingContainer
    {
        private string errorMessage;

        public string ErrorMessage
        {
            get
            {
                if (string.IsNullOrEmpty(errorMessage))
                    return "Field can't be empty";
                else
                    return errorMessage;
            }
            set { errorMessage = value; }
        }

        private string validationGroup;

        public string ValidationGroup
        {
            get
            {
                if (string.IsNullOrEmpty(validationGroup))
                    return "DefaultValidationGroup";
                else
                    return validationGroup;
            }
            set { validationGroup = value; }
        }


        private TextBox textBox;

        public TextBox TextBox
        {
            get { return textBox; }
            set { textBox = value; }
        }
        private RequiredFieldValidator requiredFieldValidator;

        public RequiredFieldValidator RequiredFieldValidator
        {
            get { return requiredFieldValidator; }
            set { requiredFieldValidator = value; }
        }

        public TextboxAndRequiredFieldValidator()
        {
            this.EnsureChildControls();
        }

        protected override void OnInit(EventArgs e)
        {
            this.EnsureChildControls();
            base.OnInit(e);
        }
        protected override void CreateChildControls()
        {
            requiredFieldValidator = new RequiredFieldValidator();
            requiredFieldValidator.ID = "RequiredFieldValidator";
            requiredFieldValidator.Display = ValidatorDisplay.Dynamic;
            requiredFieldValidator.ErrorMessage = this.ErrorMessage;
            requiredFieldValidator.ControlToValidate = "TextBox";
            requiredFieldValidator.ValidationGroup = this.ValidationGroup;
            this.Controls.Add(requiredFieldValidator);

            textBox = new TextBox();
            textBox.ID = "TextBox";
            this.Controls.Add(textBox);
            base.OnInit(e);
        }
        protected override void Render(HtmlTextWriter writer)
        {
            textBox.RenderControl(writer);
            RequiredFieldValidator.RenderControl(writer);
            base.Render(writer);
        }
    }

Skrevet tor. d. 12. april 2007 kl. 13:43:31| #13

snepnet
snepnet (87.110 point)
public TextBox TextBox
{
  get
  {
    EnsureChildControls();
    return textBox;
  }
  set { textBox = value; }
}

Ellers new den op hvor du deklererer den.

Mvh

Skrevet tor. d. 12. april 2007 kl. 13:47:38| #14

ameq
ameq (13.328 point)
Ellers new den op hvor du deklererer den. <- ja men jeg ville jo også godt havde at at den bliver tilføjet til kontrol træet

Skrevet tor. d. 12. april 2007 kl. 13:56:07| #15

snepnet
snepnet (87.110 point)
Det gør du her:
this.Controls.Add(textBox);
Og på det tidspunkt skal den bare være instantieret.
Mvh

Skrevet tor. d. 12. april 2007 kl. 14:44:50| #16

ameq
ameq (13.328 point)
Underligt, nu har jeg tilføjet nolge flere af TextboxAndRequiredFieldValidator  og nu virker det som om at de checker for noget forkert...

Når jeg loader siden først gang kommer fejl beskeden frem med det samme og selv om jeg skriver noget i boksene og af-foruser tekstboxen står fejlen der stadig :S why?

public class TextboxAndRequiredFieldValidator : WebControl, INamingContainer
    {
        private string errorMessage;

        public string ErrorMessage
        {
            get
            {
                if (string.IsNullOrEmpty(errorMessage))
                    return "Field can't be empty";
                else
                    return errorMessage;
            }
            set { errorMessage = value; }
        }

        private string validationGroup;

        public string ValidationGroup
        {
            get
            {
                if (string.IsNullOrEmpty(validationGroup))
                    return "DefaultValidationGroup";
                else
                    return validationGroup;
            }
            set { validationGroup = value; }
        }


        private TextBox textBox;

        public TextBox TextBox
        {
            get {
                this.EnsureChildControls();
                return textBox;
            }
            set { textBox = value; }
        }
        private RequiredFieldValidator requiredFieldValidator;

        public RequiredFieldValidator RequiredFieldValidator
        {
            get { return requiredFieldValidator; }
            set { requiredFieldValidator = value; }
        }

        public TextboxAndRequiredFieldValidator()
        {
            this.EnsureChildControls();
        }

        protected override void OnInit(EventArgs e)
        {
            this.EnsureChildControls();
            base.OnInit(e);
        }
        protected override void CreateChildControls()
        {
            if (!ChildControlsCreated)
            {
                requiredFieldValidator = new RequiredFieldValidator();
                requiredFieldValidator.ID = this.UniqueID + "RequiredFieldValidator";
                requiredFieldValidator.Display = ValidatorDisplay.Dynamic;
                requiredFieldValidator.ErrorMessage = this.ErrorMessage;
                requiredFieldValidator.ControlToValidate = "TextBox";
                requiredFieldValidator.ValidationGroup = this.ValidationGroup;
                this.Controls.Add(requiredFieldValidator);

                textBox = new TextBox();
                textBox.ID = "TextBox";
                this.Controls.Add(textBox);

                ChildControlsCreated = true;
            }
           
          }
        protected override void Render(HtmlTextWriter writer)
        {
            textBox.RenderControl(writer);
            RequiredFieldValidator.RenderControl(writer);
        }
    }

Skrevet tor. d. 12. april 2007 kl. 14:50:25| #17

ameq
ameq (13.328 point)
Det skal nok lige tilføje at jeg ikke tilføjer mine kontroler i CreateChildControls mere men kun i min BuildRow metode

Skrevet man. d. 16. april 2007 kl. 17:26:21| #18

snepnet
snepnet (87.110 point)
Jeg er ikke helt sikker på hvad det er du skriver, og jeg kan heller ikke genskabe problemet her (jeg undlader dog at angive en validationgroup).

Har du mulighed for at give mig lidt mere at arbejde med?
(eventuelt skrive hvordan du indsætter knapper på siden og angiver validatiogroup på dem)

Mvh

Skrevet man. d. 16. april 2007 kl. 17:44:19| #19

ameq
ameq (13.328 point)
du får lige noget mere kode imorgen :)

Skrevet tir. d. 17. april 2007 kl. 11:55:17| #20

snepnet
snepnet (87.110 point)
Det siger vi da bare :o)
Mvh

Skrevet ons. d. 18. april 2007 kl. 14:57:56| #21

ameq
ameq (13.328 point)
Min OnInit Metode:
protected override void OnInit(EventArgs e)
        {
            try
            {
                debatTitle = new TextboxAndRequiredFieldValidator();
                debatTitle.ID = "DebatTitle";

                debatText = new TextboxAndRequiredFieldValidator();
                debatText.ID = "DebatText";
                debatText.TextBox.TextMode = TextBoxMode.MultiLine;

                debatFirstName = new TextboxAndRequiredFieldValidator();
                debatFirstName.ID = "DebatFirstName";

                debatLastName = new TextboxAndRequiredFieldValidator();
                debatLastName.ID = "DebatLastName";

                if (this.Context.User.Identity.IsAuthenticated && this.Page != null)
                {
                    using (SPSite site = new SPSite(this.Page.Request.Url.ToString()))
                    {
                        using (SPWeb web = site.RootWeb)
                        {
                            ServerContext serverCotext = ServerContext.GetContext(site);
                            UserProfileManager userProfileManager = new UserProfileManager(serverCotext);
                            UserProfile userProfile = userProfileManager.GetUserProfile(this.Context.User.Identity.Name);
                           
                            if(userProfile[PropertyConstants.FirstName].Count != 0)
                                debatFirstName.TextBox.Text = userProfile[PropertyConstants.FirstName].ToString();

                            if (userProfile[PropertyConstants.LastName].Count != 0)
                                debatLastName.TextBox.Text = userProfile[PropertyConstants.LastName].ToString();
                        }
                    }
                }

                hyperLink = new HyperLink();
                string parentDebatID = string.Empty;

                if (!string.IsNullOrEmpty(this.Context.Request.QueryString["ParentDebatID"]))
                    parentDebatID = string.Format("DebatID={0}", this.Context.Request.QueryString["ParentDebatID"]);

                hyperLink.Text = "Tilbage til debatten";
                if (this.singleThread)
                    hyperLink.NavigateUrl = string.Format("{0}", this.Context.Request.Path);
                else
                    hyperLink.NavigateUrl = string.Format("{0}?DebatView=List&{1}", this.Context.Request.Path, parentDebatID);

                buttonSaveComment = new Button();
                buttonSaveComment.ID = "DebatSaveComment";
                buttonSaveComment.Click += new EventHandler(DebatSaveCommentClick);
                buttonSaveComment.Text = "Save and stuff";

                //this.Controls.Add(debatTitle);
                //this.Controls.Add(debatText);
                //this.Controls.Add(debatFirstName);
                //this.Controls.Add(debatLastName);
                this.Controls.Add(hyperLink);
                //this.Controls.Add(buttonSaveComment);
               
            }
            catch (Exception ex)
            {
                errorMessage = ex.ToString();
                errorOccured = true;
            }
        }
Min Render Metode:
protected override void Render(HtmlTextWriter writer)
        {
            try
            {
                this.EnsureChildControls();
                if (!string.IsNullOrEmpty(DebatGUID))
                {
                    if (string.IsNullOrEmpty(this.Context.Request.QueryString["DebatID"]) || DebatRenderMode == DebatRenderMode.ViewList)
                    {
                   
                        using (SPSite site = new SPSite(this.Context.Request.Url.ToString()))
                        {
                            using (SPWeb web = site.RootWeb)
                            {
                                GetDebatItems(web.Lists["DebatItems"], this.DebatGUID);
                            }
                        }

                        writer.Write("<h1>{0}</h1>", GetDebatHeadline(this.DebatGUID));
                        writer.Write("<ul>");
                        writer.Write(debatOutput.ToString());
                        writer.Write("</ul>");
                        writer.Write("<div><a href=\"?DebatID={0}&ParentDebatID={0}\">Tilf&oslash;j Kommenter<a></div>", this.DebatGUID);
                    }
                    else
                    {
                        Label debatCommentarWrapper = new Label();
                        debatCommentarWrapper.CssClass = "DebatCommentWrapper";

                        ////Firstname
                        //Panel firstNamePanel = BuildRow("First Name", debatFirstName);
                        //debatCommentarWrapper.Controls.Add(firstNamePanel);
                        this.Controls.Add(debatFirstName);
                        debatFirstName.RenderControl(writer);
                        ////Last name
                        //Panel lastNamePanel = BuildRow("Last Name", debatLastName);
                        //debatCommentarWrapper.Controls.Add(lastNamePanel);

                        ////Debat Title
                        //Panel titlePanel = BuildRow("Title", debatTitle);
                        //debatCommentarWrapper.Controls.Add(titlePanel);

                        ////Debat text
                        //Panel textPanel = BuildRow("Text", debatText);
                        //debatCommentarWrapper.Controls.Add(textPanel);
                       
                        ////Save button
                        //Panel saveButtonPanel = BuildRow("", buttonSaveComment);
                        //debatCommentarWrapper.Controls.Add(saveButtonPanel);
                        this.Controls.Add(buttonSaveComment);
                        buttonSaveComment.RenderControl(writer);
                        ////Render alle kontroler ud
                        //debatCommentarWrapper.RenderControl(writer);

                        //E.g. Tilbage link
                        hyperLink.RenderControl(writer);

                        //E.g. Din kommentar er blevet tilføjet
                        devatCommentReturnMessage.RenderControl(writer);

                        SPListItem debatItem = GetDebatItem(this.Context.Request.QueryString["DebatID"]);
                        if (debatItem != null)
                        {
                            debatCommentText.Text = string.Format("<div class=\"DebatCommentTextWrapper\"><div><h1>{0}</h1></div><div>{1}</div></div>", debatItem["Title"], debatItem["Text"]);
                            debatCommentText.RenderControl(writer);
                        }
                    }
                }
               
               
            }
            catch (Exception ex)
            {
                errorMessage = ex.ToString();
                errorOccured = true;
            }
            if (errorOccured)
                writer.Write(errorMessage);

        }

Min TextboxAndRequiredFieldValidator klasse
public class TextboxAndRequiredFieldValidator : WebControl, INamingContainer
    {
        private string errorMessage;

        public string ErrorMessage
        {
            get
            {
                if (string.IsNullOrEmpty(errorMessage))
                    return "Field can't be empty";
                else
                    return errorMessage;
            }
            set { errorMessage = value; }
        }

        private string validationGroup;

        public string ValidationGroup
        {
            get
            {
                if (string.IsNullOrEmpty(validationGroup))
                    return "DefaultValidationGroup";
                else
                    return validationGroup;
            }
            set { validationGroup = value; }
        }


        private TextBox textBox;

        public TextBox TextBox
        {
            get {
                this.EnsureChildControls();
                return textBox;
            }
            set { textBox = value; }
        }
        private RequiredFieldValidator requiredFieldValidator;

        public RequiredFieldValidator RequiredFieldValidator
        {
            get { return requiredFieldValidator; }
            set { requiredFieldValidator = value; }
        }

        public TextboxAndRequiredFieldValidator()
        {
            this.EnsureChildControls();
        }

        protected override void OnInit(EventArgs e)
        {
            this.EnsureChildControls();
            base.OnInit(e);
        }
        protected override void CreateChildControls()
        {
            if (!ChildControlsCreated)
            {
                requiredFieldValidator = new RequiredFieldValidator();
                requiredFieldValidator.ID = this.UniqueID + "RequiredFieldValidator";
                requiredFieldValidator.Display = ValidatorDisplay.Dynamic;
                requiredFieldValidator.ErrorMessage = this.ErrorMessage;
                requiredFieldValidator.ControlToValidate = "TextBox";
                requiredFieldValidator.ValidationGroup = this.ValidationGroup;
                this.Controls.Add(requiredFieldValidator);

                textBox = new TextBox();
                textBox.ID = "TextBox";
                this.Controls.Add(textBox);

                ChildControlsCreated = true;
            }
           
          }
        protected override void Render(HtmlTextWriter writer)
        {
            textBox.RenderControl(writer);
            RequiredFieldValidator.RenderControl(writer);
        }
    }

Er det nok?

Skrevet tir. d. 24. april 2007 kl. 09:54:38| #22

ameq
ameq (13.328 point)
Jeg har sidet og leget lidt med det og i min Render metode skriver jeg

debatFirstName = new TextboxAndRequiredFieldValidator();
                        debatFirstName.ID = "DebatFirstName";
                        debatFirstName.RequiredFieldValidator.ValidationGroup = "DefaultValidationGroup";
                        this.Controls.Add(debatFirstName);
                        debatFirstName.RenderControl(writer);

                        buttonSaveComment = new Button();
                        buttonSaveComment.ID = "DebatSaveComment";
                        buttonSaveComment.Click += new EventHandler(DebatSaveCommentClick);
                        buttonSaveComment.Text = "Save and stuff";
                        buttonSaveComment.ValidationGroup = "DefaultValidationGroup";
                        this.Controls.Add(buttonSaveComment);
                        buttonSaveComment.RenderControl(writer);

Kan jeg gøre det på den måde? eller skal jeg tilføje min kontroller et andet sted?

min knaps event kaster en Exception men den kommer ikke frem når jeg trykker på knappen

Skrevet tir. d. 24. april 2007 kl. 10:50:02| #23

snepnet
snepnet (87.110 point)
Det vil ikke være normal fremgangsmåde at lægge kontroller i kontroltræet i render - CreateChildControls bør være initiater for den slags.
Prøv at tilføj den til kontroltræet der, og husk at sikre at du har INamingContainer på klassen (ellers vil det ikke virke).
Mvh

Skrevet tir. d. 24. april 2007 kl. 10:55:23| #24

ameq
ameq (13.328 point)
okey prøver lige det

Skrevet søn. d. 01. juli 2007 kl. 08:58:46| #25

snepnet
snepnet (87.110 point)
Hej ameq :o)
Jeg lægger et svar her hvis du vil lukke spørgsmålet.
Mvh

Skrevet søn. d. 01. juli 2007 kl. 13:57:15| #26

ameq
ameq (13.328 point)
Jo tak og tak for hjælp. Sorry jeg ikke har svaret, fundt også min fejl.
Jeg skal havde tilføjet min tekstboks inden jeg tilføjer min vaild. kontrol.
Offtopic
Tak for geek dinner :)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

GridView og RowCommand

Oprettet den 22. maj 2012 kl. 17.34
faran giver 30 point for svar | Giv et svar »

Flere betingelser i repeater.

Oprettet den 15. maj 2012 kl. 21.45
fuldstop giver 60 point for svar | Giv et svar »

kombinere code behind og Javascript

Oprettet den 6. maj 2012 kl. 09.02
tjacob giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger