Hur kommer jag åt en controll från min classmodul. Var finns kontrollen 'ImageTable1'? Ligger den inne i en annan kontroll? Har du deklarerat kontrolen på rätt sätt i din Code Behind? Och var ligger webform1? ok... Ändrade i webform1 till: Så här ligger det till. Din .aspx sida hette i det här tillfället Webform1.aspx. Code Behind (CB) sidan heter troligtvis Webform1.aspx.vb. Och normalt sätt döps CB klassen till 'Public Class Webform1'. Du har valt att kalla den 'main_lib' vilket är helt ok. Nu kommer vi in på detta med arv som kan vara lite knepigt men ändå inte. Tack, men då jag använder Inherits System.Web.UI.Page i min main_lib klass fungerar det inte. Då är main_lib inte klassen som finns i Code Behind filen till din .aspx sida, utan någon sorts Utilty klass. I sådana all skall du inte hantera din tabell som du gör. Du får försöka att uttrycka dig klarare och beskriva ditt scenario bättre. Vi är inte tankeläsare och du kastar bort vår tid när vi utgår ifrån scenarier som är inkorrekta i sammanhanget. Visst det är möjligt att min beskrivning var dålig, men detta beror ju på min bristande kompetens inom ämnet. Du behöver bara beskriva vad du har lite bättre.Hur kommer jag åt en controll från min classmodul.
Testade med:
Public Class main_lib
Inherits System.Web.UI.Page
Public Sub getLatestImages()
Dim myTABLE1 As Table = FindControl("ImageTable1")
......
.......Sv: Hur kommer jag åt en controll från min classmodul.
Sv: Hur kommer jag åt en controll från min classmodul.
Du måste deklarera din kontroll som Protected ImageTable1 As Table (eller vad du nu har för kontroll)
i din code-behind. Sen kan du använda den i koden.
Skicka in din .aspx kod så har vi lättare att hjälpa dig.Sv: Hur kommer jag åt en controll från min classmodul.
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents ImgTable1 As System.Web.UI.WebControls.Table
...
.....
Alltså hur kommer jag åt denna från en annan klass?Sv: Hur kommer jag åt en controll från min classmodul.
Protected Shared WithEvents ImgTable1 As System.Web.UI.WebControls.Table
och i classmodulen:
Inherits WebForm1
Då funkade det fint, men är det så här man gör??? Fattar inte riktigt, får väl läsa på lite OO antar jag.
Är tacksam för kommentarer.Sv: Hur kommer jag åt en controll från min classmodul.
Det finns ett antal såkallade Bas Klasser i .Net. Page är en sånn. Arvföljden i dina sidor ser ut så här.
Page (Bas klass)
|
Ärvs av den
deriverade
klassen:
|
Main_Lib (Deriverad klass - Inherits Page)
|
Ärvs av sidan:
|
Webform1.aspx
|
Ärver från Main_Lib (<%@Page Inherits="Namespace.Main_Lib" etc... %>) OCH Page
När du lägger till kontroller på Websidan i VS.Net design time deklareras dessa automatiskt av VS.Net som Protected WithEvents variabler i CB, och blir tillgängliga för de metoder som skapas i CB (samt även för Bas Klassen Page). Protected innebär att variabeln har scope i klassen där den är deklarerad (men även för alla deriverade klasser).
Med följande kod i din CB blir din tabell tillgänglig för de Privata metoderna i klassen Main_Lib:
<code>
Protected WithEvents myTABLE1 As System.Web.UI.WebControls.Table
Public Class Main_Lib
Inherits System.Web.UI.Page
Private Sub getLatestImages()
'Nu har du full access till tabellobjektet 'myTABLE1'
......
.......
End Sub
End Class
</code>
Hoppas detta kastar lite ljus över hur det fungerar.Sv: Hur kommer jag åt en controll från min classmodul.
Däremot så fungerar det fint då jag skriver Inherits WebForm1.
Fast jag har då tagit bort:
Dim myTABLE1 As Table = FindControl("ImageTable1")
och referer till webform1.ImageTable1 istället.
vet inte vad som är korrekt, men det funkar nu iallafall.
Tack!Sv: Hur kommer jag åt en controll från min classmodul.
Sv: Hur kommer jag åt en controll från min classmodul.
Tråkigt inställning angående tiden som du har fått kasta bort på min fråga.
Tack ändå, jag får väl gå en kurs i OO isället för att fråga runt här.
Sv: Hur kommer jag åt en controll från min classmodul.
Vad har du för filer? Vad är det tänkt att filerna ska göra? Vad har du i varje fil?
Är main_lib en basklass som ärver Page?
Då ska alla andra sidor ärva main_lib.
Sen handlar det till viss del inte bara om OO, det handlar om att deklarera sina kontroller på rätt ställen.
Ett tillägg: André, du har fortfarande inte lärt att vara lite ödmjuk. I det här fallet är det ditt eget fel att du "slösat" tid.
För det första, både main_lib och webform1 nämns.
För det andra, och det här är till alla som läser detta, om man inte vill "slösa" tid så skriv inte ihop en massa kod på vad man tror ska vara svaret. Fråga istället om att få det förtydligat.
Tror att vi alla vet vid det här laget att det finns väldigt många nybörjare, vilket vi alla varit, och de tänker inte på samma sätt som oss som hållit på ett par år. Vi kan inte ta för givet att frågan gäller det vi tror.