Avatar billede halden Nybegynder
22. september 2004 - 13:35 Der er 9 kommentarer og
1 løsning

tilgang til variable over i user control

jeg har en user control med codebehind. I men c# kode har jeg en string dato(variable på class niveau) som jeg gerne vil have udskrevet i min html kode - hvordan gør jeg det???
Avatar billede halden Nybegynder
22. september 2004 - 13:43 #1
jeg bruger denne user control til en header på et website
Avatar billede jakobandersen Nybegynder
22. september 2004 - 14:03 #2
Prøv at kigge på Parent egenskaben som du nedarver fra Control, denne vil give dig en reference til den control(Page nedarver også fra Control) der indeholder den nuværende control.
Avatar billede jakobandersen Nybegynder
22. september 2004 - 14:04 #3
Dog lyder det som en ting du ikke har tænkt ordentligt over i dit design. Meningen med kontroller er som regel at de skal kunne stå alene, så overvej evt. at sende datoen med som en parameter til kontrollen hvis du skal bruge den.
Avatar billede halden Nybegynder
22. september 2004 - 14:09 #4
ideen var bare at have en header som bl.a. viser en dato og som jeg så kan bruge i mine andre aspx sider....
Avatar billede halden Nybegynder
22. september 2004 - 14:12 #5
header.ascx:::
<%@ Control Language="c#" %>
noget html kode
..
..
have skrevet dato fra header.ascx.cs
..
..


header.ascx.cs:::
namespace Badminton
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    /// <summary>
    ///        Summary description for header.
    /// </summary>
    public class header : System.Web.UI.UserControl
    {
        public string dato = "";

        private void Page_Load(object sender, System.EventArgs e)
        {
            //her findes datoen i formatet "1. Januar 2004".
           
            DateTime dt = DateTime.Now;
            string month = "";
           
            if (dt.Month == 1)
            {
                month += "Januar";
            }
            if (dt.Month == 2)
            {
                month += "Februar";
            }
            if (dt.Month == 3)
            {
                month += "Marts";
            }
            if (dt.Month == 4)
            {
                month += "April";
            }
            if (dt.Month == 5)
            {
                month += "Maj";
            }
            if (dt.Month == 6)
            {
                month += "Juni";
            }
            if (dt.Month == 7)
            {
                month += "Juli";
            }
            if (dt.Month == 8)
            {
                month += "August";
            }
            if (dt.Month == 9)
            {
                month += "September";
            }
            if (dt.Month == 10)
            {
                month += "Oktober";
            }
            if (dt.Month == 11)
            {
                month += "November";
            }
            if (dt.Month == 12)
            {
                month += "December";
            }
            dato += dt.Day.ToString()+". "+month+" "+dt.Year.ToString();
        }


        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        ///        Required method for Designer support - do not modify
        ///        the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
}
Avatar billede thrytter Nybegynder
22. september 2004 - 14:48 #6
Det nemmeste vil være at tilføje en kontrol på din header.ascx side, evt.

<asp:Label id="lblDate" runat="Server"></asp:Label>

som du så kan tilgå i din header.ascx.cs side (eks. i Page_Load) ved:

this.lblDate.Text = dato;

Alternativt kan du bruge dt.ToLongDateString() til formattering af din dato - resulattet er næsten det samme.
Avatar billede halden Nybegynder
22. september 2004 - 14:49 #7
jeg kan simpelthen ikke så det til at virke når jeg bruge codebehind me´n når jeg ikke bruger det som her:
http://www.eksperten.dk/spm/445768
så virker det fint.
En løsning til hvordan jeg gør med codebehind ville virkelig hjælpe...
Avatar billede snepnet Nybegynder
22. september 2004 - 16:55 #8
Er det bare sådan noget her du er ude efter ?
(jeg har omskrevet din datoformatering... den virker lidt voldsom den du har lavet).

private void Page_Load(object sender, System.EventArgs e)
{
  this.Controls.Add(new LiteralControl(DateTime.Now.ToString("dd. MMMM yyyy")));
}

Ovenstående smider en tekst ind i sit eget kontroltræ, som bare skriver datoen ud.
Hvis du så har trukket din usercontrol ind på en side, vil den bare blive skrevet ud der.

Håber jeg har forstået dit spørgsmål.

mvh
Avatar billede snepnet Nybegynder
01. oktober 2004 - 20:24 #9
halden - er du der ?
Avatar billede halden Nybegynder
26. oktober 2004 - 13:03 #10
lukker spørgsmål - endte med at jeg ikke brugte codebehind alligevel
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