Hur gör jag för att använda koden från min codebehind-fil i min Usercontrol? Jag trodde att det skulle gå att göra likadant som man gör i en vanlig sida. Men icke sa nicke ;) det står: Visa gärna hela code-behind koden, Nu är jag inte riktigt med här. Koden för din aspx sida har du ju i en codebehind fil med samma namn som aspx filen fast med cs alt vb som filändelse. Koden för din userkontrol har en egen codebehind fil. Kontrollen kan du betrakta som en sida i sidan. Alltså de knappar labels, etc, etc som du har i din usercontrol programmerar du i codebehind för usercontrolen. Det där med System.Web.UI.UserControl hade jag missat. men det fungerar inte ändå... Det är såhär jag försökte att göra men det fungerar inte :( Om du testar detta, dock i C#... Jag har lite svårt att förstå c# kod. Jag satte in ett namespace men det blev ingen skillnad. Ok, skriver VB.net kod istället då. Om jag skriver: Public Class WebUserControl1 : System.Web.UI.UserControl så kommer det bara upp declaration expected. Det kanske är nåt i.o.m att jag använder webmatrix och kan inte använda iis eftersom jag har xp home. Men jag tycker inte att det skulle vara det. Måste codebehind filen heta news.ascx.vb om UserControllen heter news eller kan den heta vad som helst?? Det som stod i exemplet tidigare: Det stämmer att det var så jag ville ha det. Jag behöver mer information om jag skall kunna sätta mig in i problemet... Nej det har inte med användarkontrollproblemet att göra så jag startar upp en ny tråd med lite mer information i.Använda CodeBehind i en UserControl
/PetterSv:Använda CodeBehind i en UserControl
<code>
'SidKod' is not allowed here because it does not extend class "System.Web.UI.UserControl"
</code>Sv: Använda CodeBehind i en UserControl
Ex. på hur det ska se ut när det ska funka i en User Control.
using namnrymnd;
...
public class minuc : System.Web.UI.UserControl
{
// ex. Page_Load
}
Det är alltså <b>System.Web.UI.UserControl</b> som gör så det funkar.
I ett Webb formulär blir det istället <b>System.Web.UI.Page</b>
/m
Sv: Använda CodeBehind i en UserControl
Sv:Använda CodeBehind i en UserControl
Detta är koden. Kanske inte den syggaste men fungerar ibland ;)
Imports System
Imports system.web.UI.UserControl
Imports system.data
Imports system.data.oledb
Public Class controls
Protected WithEvents BRep As repeater
Public Sub LoadNews()
Dim con As New oledbconnection("provider=microsoft.jet.oledb.4.0; Data Source=db\minBas.mdb;Persist security info=false;")
Dim strSQL As String = "SELECT * FROM Nyheter"
Dim Command As New oledbCommand(strSQL, con)
Dim Reader As oledbdatareader
con.open()
reader = command.executereader()
BRep.datasource = reader
BRep.databind()
con.close()
reader.close()
command.dispose()
con.close()
End Sub
End Class
/Petter
Sv:Använda CodeBehind i en UserControl
<%@ Control Language="VB" Src="Controlscb.vb" Inherits="Controls" Debug="true" %>
<%LoadNews()%>
<asp:repeater id="BRep" runat="server">
<itemtemplate>
<%#databinder.eval(container.dataitem, "rubrik")%>
</itemtemplate>
</asp:repeater>
Sv: Använda CodeBehind i en UserControl
Code-behind.
namespace blog
{
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
{
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.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
ascx.
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.cs" Inherits="blog.WebUserControl1" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
din text...
skapade filerna i VS.net och de ska funka, jämnför med dina filer så kanske du ser vad som har gått snätt.
/m
Sv:Använda CodeBehind i en UserControl
Vad gör #region Web Form Designer generated code?
Har den nåt att göra med det jag håller på med, eller är det bara i c#?
Det skulle vara om man måste ha public class WebUserControl1 : System.Web.UI.UserControl.
Men om jag gör så blir det declaration expected. Antar att det ska inte ska vara så i vb.net.
/Petter Sv: Använda CodeBehind i en UserControl
Imports System
Imports System.Data
Imports System.Drawing
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Public Class WebUserControl1 : System.Web.UI.UserControl
Public Sub Page_Load()
' Något här
End Sub
' Kanske behövs det övriga, tex. som görs så att Page_Load körs.
End Class
<%@ Control Language="VB" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.vb" Inherits="WebUserControl1" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
/m
Sv:Använda CodeBehind i en UserControl
Hoppas någon kan lösa detta åt mig.
//PetterSv: Använda CodeBehind i en UserControl
<code>
Public Class WebUserControl1 : System.Web.UI.UserControl
</code>
Är C# kod som bara visar att klassen WebUserControl1 ärver av UserControl, i VB.Net skriver du istället:
<code>
Public Class WebUserControl1
Inherits System.Web.UI.UserControl
</code>
Har jag förstått rätt att du vill ha en UserControl som skall visas på en aspx-sida, men att du inte får koden i kontrollens code-behind-sida att inte fungera?! Du har ju två separata Code Behind-sidor, en för kontrollen, en för själva webbsidan. Kod för vad som skall ske i kontrollen lägger du i den code behind-sidan, och sedan "drar du bara in" kontrollen på den aspx-sidan som skall använda kontrollen. Vill du sedan anropa en del interna funktioner i kontrollen från huvudsidan så får du deklarera dem som publika i kontrollens Code Behind.
Ursäkta, har inte följt tråden från början - skall läsa igenom - men hoppas detta hjälper i alla fall! :-)
mvh RonnySv:Använda CodeBehind i en UserControl
Jag löste det på det sättet i helgen efter lite nogrannare sökningar på olika forum. Så nu fungerar det som det ska med kontrollen iallafall.
Men det har nu kommit upp ett litet problem med min inloggning som ni kanske vet hur jag ska göra.
Jag får bara upp: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
sen säger han att jag inte har debug läget på men det har jag.
/petter Sv: Använda CodeBehind i en UserControl
Hör detta ihop med användarkontroll-problemet? Du kan ju annars stänga denna tråd och skriva frågan i en ny tråd! :-)
Hur gör du inloggningskontrollen? Det låter på felmeddelandena som att du använder ett externt objekt för att göra kontrollen?! Är det ett objekt som du utvecklat själv? Ligger objektkoden med i samma solution? Är det inställt i DEBUG-läge med? Har du satt referenser till objektet OCH skapat upp en ny instans med New, etc, etc...
Många frågor! :-)Sv:Använda CodeBehind i en UserControl
//Petter