Avatar billede stephanryer Nybegynder
05. december 2005 - 16:07 Der er 16 kommentarer og
1 løsning

ønsker User Controls eksempel

Jeg har en hel del kode i min aspx fil pt. og kunne godt tænke mig at vide hvad den rigtige måde er at gøre følgende på:

Man har en tekstbox indeholdende et ord.
Man har en knap med teksten "gem ændring".

Ordet hentes fra en database ved load og overskrives ved klik på "gem ændring".

Indtil nu har jeg gjort følgende:

script:

public void Load(object sender, EventArgs e){
//Kode der henter ordet fra databasen og sætter det ind i OrdTextBox.
}
public void Save(object sender, EventArgs e){
//Kode der overskriver det gamle ord i databasen med OrdTextBox.Text
}

Html:

<asp:TextBox id="OrdTextBox" runat="server" TextMode="SingleLine" BorderStyle="Inset" Width="70px"></asp:TextBox>

<asp:Button id="HentButton" onclick="Reload" runat="server" Width="60px" Height="20px" ForeColor="Black" Text="Load"></asp:Button>

Men jeg har kigget på forskellige Threads herinde og kan se der snakkes meget om user controls istedet for scripting.

Jeg vil derfor gerne give 200 point hvis der er en der vil lave et lille simpelt eksempel på hvordan man gør ovenstående på den "korrekte" måde :)

På forhånd tak
Avatar billede stephanryer Nybegynder
05. december 2005 - 16:08 #1
knappen ser selvfølgelig sådan ud:

<asp:Button id="SaveButton" onclick="Save" runat="server" Width="60px" Height="20px" Text="Gem Ændringer"></asp:Button>
Avatar billede dr_chaos Nybegynder
05. december 2005 - 18:41 #2
du behøver ikke at bruge en usercontrol men det kan være en stor fordel.
Jeg har lavet et meget simpelt eksempel.
Usercontrol codebehind:
den hedder WebUserControl1.ascx.cs
namespace WebApplication2
{
    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 WebUserControl1.
    /// </summary>
    public class WebUserControl1 : System.Web.UI.UserControl
    {
        public System.Web.UI.WebControls.TextBox TextBox1;
        protected System.Web.UI.WebControls.Button Button1;

        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
        }

        #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.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void Button1_Click(object sender, System.EventArgs e)
        {
            //gem data.
        }
    }
}

Usercontrol ascx fil:
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.cs" Inherits="WebApplication2.WebUserControl1" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<P>
    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox></P>
<P>
    <asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
Avatar billede dr_chaos Nybegynder
05. december 2005 - 18:43 #3
aspx fil:
den hedder webform1.aspx.
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm1" %>
<%@ Register TagPrefix="uc1" TagName="WebUserControl1" Src="WebUserControl1.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <uc1:WebUserControl1 id="WebUserControl11" runat="server"></uc1:WebUserControl1>
        </form>
    </body>
</HTML>

codebehind fil webform1.aspx

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication2
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected WebUserControl1 WebUserControl1;
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            WebUserControl1.TextBox1.Text = "entekst";
           
        }

        #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 stephanryer Nybegynder
06. december 2005 - 07:46 #4
er koden så compiled som dll fil??

Indtil nu har jeg nemlig koden liggende i et <script></script>. Hvis jeg vil gemme en variabel over flere loads af samme side hvordan gøres dette så?
hvis man fx på knappen kunne bede siden om at huske et nummer som ikke skulle overskrives når siden loades igen.

Ved bare at definere den med "private int nummer = ..." bliver den nemlig overskrevet når siden loades igen.
Avatar billede dr_chaos Nybegynder
06. december 2005 - 07:54 #5
prøv at definerer det som en static int.
Nej det er ikke en dll fil.
Hvis du vil lave en dll fil skal du lave et class libray og det kræver at du opretter et  nyt projekt i visual studio.
Normalt hvis du vil sende ting mellem sider vil man ente bruge en request.form eller gemme variablen i en session.
Avatar billede dr_chaos Nybegynder
06. december 2005 - 07:58 #6
en usercontrol bliver ikke kompileret til en dll i asp.net 1.1 som jeg formoder at du bruger.
Avatar billede stephanryer Nybegynder
06. december 2005 - 08:37 #7
arhhhh nice. Så skal jeg blot have ascx-filen liggende i samme bibliotek for at den kan bruges some code-behind?
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:42 #8
hvis du ligger mærke til det bruges den ikke som codebehind til aspx filen.
ascx filen har sin egen codebehind fil.
du kan ligge ascx filen i hvilken som helst mappe.
Hvis den tilhører samme namespace som aspx filen kan du bruge den hvor du har lyst til.
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:44 #9
du kan dragge den direkte ind på design view af aspx filen.
For at bruge den i codebehind på aspx filen skal du huske at erklære den som jeg har gjort med:
protected WebUserControl1 WebUserControl1;
Avatar billede stephanryer Nybegynder
06. december 2005 - 08:45 #10
ja men denne code behindfil er også blot en aspx-fil eller hvad?
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:46 #11
aspx og ascx filen har hver deres codebehind fil.
Avatar billede stephanryer Nybegynder
06. december 2005 - 08:49 #12
Vil du evt sende mig filerne som de er helt præcist? Jeg er ny i .Net, har tidligere kun lavet ting i java.
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:50 #13
en ascx fil er næsten det samme som en aspx fil bortset fra at ascx filen er lavet til at blive inkluderet på en aspx side.
Du kan ikke have en ascx fil som du kalder via din browser.

ja det gør jeg.
hvad er din e-mail ?
Avatar billede stephanryer Nybegynder
06. december 2005 - 08:51 #14
ok. jeg opgiver lige en adresse som jeg bruger til alt muligt forskelligt, så min almindelige mail ikke ligger synlig her på siden: denfalskeadresse@hotmail.com

Men bare rolig. den er rigtig nok :)
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:53 #15
sender dig lige filerne :)
Avatar billede stephanryer Nybegynder
06. december 2005 - 08:55 #16
Læg lige et svar. Det er top nice service det der :) Tusind tak, kan godt være jeg lige har nogle flere spørgsmål hvis ikke det vil virke.
Avatar billede dr_chaos Nybegynder
06. december 2005 - 08:55 #17
svar og sendt og du spørge bare løs.
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