Avatar billede websam Nybegynder
23. juli 2004 - 23:51 Der er 57 kommentarer og
1 løsning

Link button og variabel text ?

Hejsa,

Jeg har lavet et sprogmodul hvor folk kan vælge sprog på min side, nu vil jeg så gerne have det således at der automatisk skiftes sprog på mine linkbuttons men det kan jeg ikke helt hitte rede i her kommer min idé :

<asp:LinkButton id="LinkButton1" text="<%= arrLinkTekst(3)%>" runat="server"/>

Men det virker ikke der vises ikke noget og jeg får ingen fejl en der kan hjælpe mig med det ?

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:08 #1
<asp:LinkButton id="LinkButton1" text="<%# arrLinkTekst(1) %>" runat="server"/>

Og så skal du huske at kalde DataBind();
Avatar billede nielsbrinch Nybegynder
24. juli 2004 - 00:08 #2
Kommer der noget hvis du skriver <%= arrLinkTekst(3)%> udenfor din LinkButton.
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:09 #3
Og så kan din variabel (arrLinkTekst) ikke være private... Minimum protected.
Mvh
Avatar billede websam Nybegynder
24. juli 2004 - 00:14 #4
Snepet >> Med dit forslag får jeg denne fejl :

Compiler Error Message: BC30451: Name 'arrLoginArray' is not declared.

Jeg skylder nok lige at sige at mit sprogmodul ligger som en component og lavet i vs.net

nielsbrinch >> Får jeg ingen fejl men får heller ikke vist noget

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:16 #5
Jeg bruger C#, og hvis jeg laver sådan en her i aspx-filen :
<asp:LinkButton id="LinkButton1" text="<%# arrLinkTekst[1] %>" runat="server"/>
Og sådan en her i mon code-behind
protected string[] arrLinkTekst = {"hej","med","dig","du","gamle"};

Fungerer det helt fint.
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:18 #6
Mht.... dit arrLoginArray, så kan jeg ikke rigtig se hvordan
<asp:LinkButton id="LinkButton1" text="<%# arrLinkTekst[1] %>
Skulle udløse den slags... Der må ligge noget andet kode et sted der bruger det array.
Avatar billede websam Nybegynder
24. juli 2004 - 00:21 #7
og når jeg så har denne i min page_load :

Dim arrLoginArray As Array = Split(mlb.ShowLanguage(Session("setLanguage")), ",")

Så splitter jeg mit array op i arrLoginArray(0), arrLoginArray(1) osv.

Men hvorfor jeg ikke kan få lov at vise det fatter jeg ikke, det er jo sikkert bare en eller anden dum lille ting jeg mangler, for jeg kan godt smide det ien label.

/Websam
Avatar billede websam Nybegynder
24. juli 2004 - 00:24 #8
Hvis jeg f.eks laver denne i min page_load :

Dim arrLoginArray As Array = Split(mlb.ShowLanguage(Session("setLanguage")), ",")
Label1.Text = arrLoginArray(1)

Så virker det fint !?! kan det hænge sammen med at det er en .ascx og ikke en .aspx fil jeg har lave det i ?

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:30 #9
husker du at kalde DataBind() ?
Avatar billede websam Nybegynder
24. juli 2004 - 00:32 #10
Ok der står jeg lidt af hvad/hvor skal dette ske ?
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:32 #11
Hvis du angiver noget som nedenstående i aspx / ascx filen
<asp:LinkButton id="LinkButton1" text="<%# arrLinkTekst[1] %>
Vil du ikke få det med mindre du databinder.
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:33 #12
Du kan bare skrive det som det sidste i din Page_Load - bare sådan her :
DataBind()
Avatar billede websam Nybegynder
24. juli 2004 - 00:35 #13
De tgiver det samme resultat jeg får stadig den samme fejl :

BC30451: Name 'arrLoginArray' is not declared
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:38 #14
Hvis du først deklererer den i Page_Load er den det heller ikke.
Det skal være en klassevariabel - så du kan ikke deklerere den i en metode.

Du kan så initialisere den i OnInit()
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:41 #15
Ah... den hedder Page_Init i VB kan jeg se :o)
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:46 #16
Altså f.eks. sådan en code-behind fil her :

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected arrLinkTekst As System.Collections.Specialized.StringCollection

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
        arrLinkTekst = New System.Collections.Specialized.StringCollection
        arrLinkTekst.Add("hej")
        arrLinkTekst.Add("med")
        arrLinkTekst.Add("dig")
        arrLinkTekst.Add("du")
        arrLinkTekst.Add("gamle")
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        DataBind()
    End Sub

End Class

Og så stadig den gamle :
<asp:LinkButton id="LinkButton1" text="<%# arrLinkTekst(1) %>" runat="server"/>

i aspx-filen.
Avatar billede snepnet Nybegynder
24. juli 2004 - 00:46 #17
Er du med på den ?
Avatar billede websam Nybegynder
24. juli 2004 - 00:53 #18
Ja det kan jeg godt følge dig i men når så jeg har min sprog modul liggende i en seperat .vb fil hvor mit array bliver lavet så kan jeg ikke helt se sammenhænget i dette :o(

jeg prøver at rode lidt mere med det du har da hjulpet mig et godt stykke vej.

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 01:00 #19
Æhh... sammenhængen. Nu er jeg stået af :o)

Du spurgte om hvordan du fik
<asp:LinkButton id="LinkButton1" text="<%= arrLinkTekst(3)%>" runat="server"/>
Til at virke.

Om du initialiserer arrayet med en metode fra en anden klasse gør ikke nogen forskel, og du kan sådan set også databinde direkte til en property i den anden klasse, så længe den bare er deklereret i din form-klasse, og initialiseret inden du kalder DataBind().

Jeg laver lige et lille eksempel - jeg forsøger mig i VB. Du har det om lidt.
Avatar billede websam Nybegynder
24. juli 2004 - 01:04 #20
Det er nok bare fordi jeg ikke fatter en brik af det hele *LOL* og så er klokken ved at være mange hvilket ikke gør det bedre :o)

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 01:10 #21
Hehe - så galt er det jo nok ikke :o)

Nå... Jeg skriver lige det der eksempel til dig. Så kan du jo altid kigge på det når det passer.

Mvh
Avatar billede websam Nybegynder
24. juli 2004 - 01:12 #22
bare i orden
Avatar billede websam Nybegynder
24. juli 2004 - 01:12 #23
Jeg venter gerne :o)
Avatar billede snepnet Nybegynder
24. juli 2004 - 01:22 #24
Damn... Det er da noget underligt noget sådan noget VB ?!?
Nå - men her får du et eksempel, hvor ressourcen liggen i en anden klasse, men alligevel bliver tilgået direkte fra din page-klasse.

// På aspx-siden :

<asp:LinkButton id="LinkButton1" text="<%# LanguageStrings(1) %>" runat="server"/>


//Din code-behind :

Imports System.Collections.Specialized
Public Class WebForm1
    Inherits System.Web.UI.Page

    Private m_languageResource As LanguageResource
    Protected ReadOnly Property LanguageStrings() As StringCollection
        Get
            Return m_languageResource.ResourceStrings
        End Get
    End Property


#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        m_languageResource = New LanguageResource
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        DataBind()
    End Sub
End Class


// Og din ressourceklasse :

Imports System.Collections.Specialized

Public Class LanguageResource
    Private m_strResourceStrings As StringCollection

    Public ReadOnly Property ResourceStrings() As StringCollection
        Get
            Return m_strResourceStrings
        End Get
    End Property

    Public Sub New()
        m_strResourceStrings = New StringCollection
        m_strResourceStrings.Add("hej")
        m_strResourceStrings.Add("med")
        m_strResourceStrings.Add("dig")
        m_strResourceStrings.Add("du")
        m_strResourceStrings.Add("gamle")
    End Sub

End Class
Avatar billede websam Nybegynder
24. juli 2004 - 01:31 #25
ok jeg tjekker om ikke jeg kan få det til at spille, men nu er det altså ved at være sengetid for mit vedkommende :o)

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 01:33 #26
Det er bare iorden :o)
Avatar billede websam Nybegynder
24. juli 2004 - 11:16 #27
Det hjælper altid at sove lidt på det hele :o)

hvis nu man tænker sig lidt om så er det jo nødagtig det samme som med en label :

'---Label
Label.Text = arrLoginArray(1)

'---linkButton
Linkbutton.Text = arrLoginArray(1)

Og vupti det hele er som det skal være så det var bare dejligt, men dine ideer ovenfor har da klart åbnet nye døre for min viden, og helt klart noget jeg lige skal have kigget noget mere på :o)

Smid et svar dem af jer der vil have point.

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 11:58 #28
Jeps - det er fuldstændig det samme, men der er forskel på at angive det på den måde i koden, og på at angive på aspx-siden med efterfølgende databinding.
Du skriver bare hvis du få mere ballade med det.
Mvh - og held og lykke med det.
Avatar billede websam Nybegynder
24. juli 2004 - 12:05 #29
Ja det kan jeg se men jeg skal jo blot bruge det som tekst hvis så det er fra database der skal hentes link navn så er det en anden snak men det skulle der være styr på og ellers ved jeg jo hvor jeg kan hente hjælp :o)

/Websam
Avatar billede snepnet Nybegynder
24. juli 2004 - 12:06 #30
Tak for point - og jeg skal nok være der hvis du spørger igen :o)
Avatar billede websam Nybegynder
24. juli 2004 - 12:08 #31
Lyder godt :o)
Avatar billede websam Nybegynder
26. juli 2004 - 21:16 #32
Hey jeg har lidt flere spm. når nu jeg kommer til at lege med dine ideer oven for. iførste omgang prøver jeg mig frem med din ide i 24/07-2004 00:46:06

Men når jeg prøver med databind f.eks arrLogin(0) eller arrLogin(1) får jeg denne fejl :

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

Og det er i en linie hvor min label forkommer som denne :

...<asp:label id="Label3" runat="server" Text="<%# arrLogin(1) %>"></asp:label>...

Hvad betyder det og hvad gør jeg forkert ? Og du får selvfølgelig flere point :o)

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 21:25 #33
Må jeg se din kode ?
Avatar billede websam Nybegynder
26. juli 2004 - 21:32 #34
Den kommer her :

Public MustInherit Class Login
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected arrLogin As System.Collections.Specialized.StringCollection

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
        arrLogin = New System.Collections.Specialized.StringCollection()
        Dim setLanguage As String
        setLanguage = Session("setLanguage")
        Select Case setLanguage
            Case "da"
                arrLogin.Add("Login")
                arrLogin.Add("Brugernavn")
                arrLogin.Add("Adgangskode")
                arrLogin.Add("Glemt Adgangskode")
                arrLogin.Add("Ny Bruger")
        End Select
    End Sub

#End Region

    Public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataBind()
    End Sub
End Class

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 22:05 #35
Mit bedste gæt er, at værdien af setLanguage ikke er "da".
Hvor sætter du værdien ?
og
Har du checket med debuggeren, at den har den rigtige værdi ?
Avatar billede websam Nybegynder
26. juli 2004 - 22:13 #36
Koden oven for ligger i en .ascx fil som bruges på en .aspx side på denne .aspx side har jeg i page_load sat min Session("setLanguage") = "da" så det burde være i orden men jeg tjekker lige for en sikkerheds skyld :o)

/Websam
Avatar billede websam Nybegynder
26. juli 2004 - 22:18 #37
Jeg får fejl ved debug noget i stil med at der ikke skulle være rettigheder  til at debugge, men jeg satte lige en Case Else ind for at teste og så virkede det så der er lige noget jeg skal tjekke op på :o)

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 22:19 #38
Init i din usercontrol bliver eksekveret før load i din page.
Avatar billede websam Nybegynder
26. juli 2004 - 22:25 #39
Ok det var jo en ret vigtig tin at vide :o) Ellers kan jeg jo lede efter fejlen i 100 år takker jeg laver lige at spm med point til dig :o)

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 22:37 #40
Det var så lidt... Hvis du søger på msdn efter lifecycle of af page, og lifecycle of a control, skal du nok finde nogle gode oversigter over det.
Hvis du ikke har held med dig må du lige skrive - så skal jeg nok finde dem og poste dem her.

Mvh
Avatar billede websam Nybegynder
26. juli 2004 - 22:47 #41
Jeg fandt på usercontrol, men ikke umiddelbart på page

Usercontrol :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcontrolexecutionlifecycle.asp

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 23:09 #42
Det er sådan set det samme... Page er en specialisering af TemplatedControl, som igen er en specialisering af Control, men der er en lidt overordnet her også :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconWebFormsPageProcessingStages.asp

Denne her er også god (event-model) :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconwebformseventmodel.asp
Avatar billede websam Nybegynder
26. juli 2004 - 23:18 #43
Hov vent nu lidt :o) Den med page_unloade er det en jeg selv skal skrive for at afslutte diverse åbne ting eller hvad ?

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 23:28 #44
Hvis du vil håndtere eventet skal du selv hooke op til det - ligesom det er gjort med page_load.
Du kan dog gjort få det gjort automatisk, hvis du angiver AutoEventWireup="false" i aspx-filen (i dit page-directive).... Så skal du bare skrive metoden.
Dit page-directive er f.eks. sådan en her :
<%@ Page language="c#" Codebehind="CodeBehind.aspx.cs" AutoEventWireup="false" Inherits="Sample.CodeBehind" %>
Avatar billede websam Nybegynder
26. juli 2004 - 23:43 #45
Nu tror jeg klokken er ved at være for mange igen for det fattede jeg ikke en klap af :o)

Men hvis jeg f.eks har en function der lukker for database i et component kan jeg så ikke blot bare kaldde den function i selve componentet når jeg har hentet data ind i dataset ? Hvilket bringer mig vidre til næste spørgsmål skal datasetet også fjernes fra hukommelse eller sker det automatisk og hvordan fjerner jeg evt. datasetet ?

Og hvad angår det med min session("setLanguage") så kan jeg sætte den default til at være "da" i global.asax filen under Sub Session_Start på den måde får jeg sat sprog på min side og derefter er det i en usercontrol der fortages skift af sprog og så virker det hele fint :o)

/Websam
Avatar billede snepnet Nybegynder
26. juli 2004 - 23:54 #46
Jo det er helt normalt at lave dine databasekald i en
try
{
    // åbn
    // hent
}
catch
{
  //
}
finally
{
  // luk
}

Og det er ikke nødvendigt at du selv rydder op - garbagecollectoren giver en hånd der :o)

Det sidste kan du læse en artikel om her :
http://www.csharphelp.com/archives2/archive297.html

Men der er masser andre steder at læse om det.
Avatar billede snepnet Nybegynder
26. juli 2004 - 23:56 #47
Har du for øvrigt overvejet at benytte nogle af de indbygge muligheder for localization ?
(altså det med sproguafhængighed og den slags).
Avatar billede websam Nybegynder
27. juli 2004 - 00:00 #48
Jeg ved ikke om jeg fik det sagt men det er blot 14 siden jeg tog hul på brugen af vb.net, asp.net og vs.net så jeg er meget grøn endnu så den med muligheder for localization siger mig ikke meget, men stadig hvis jeg vil sætte nogle tekster på i forskelligt sprog er det vel op til mig at få det programmeret da der ikke er nogle der ved hvad jeg vil have stående på min side ?

/Websam
Avatar billede websam Nybegynder
27. juli 2004 - 00:13 #49
Og hvis jeg fangede den med database lukning rigtigt så er det ikke helt af vejen med følgende måde :

Function DbConnect()
    '--- Laver db forbindelse
End Function

Function DbConnect()
    '--- Lukker db forbindelse
End Function

Function DbSelect()
    Try
    '--- Laver db forbindelse og henter data
    Catch
    '--- Smider i dataset
    Finally
    '--- Lukker db forbindelse
End Function

Bare lige en meget kort udgave af mit database layer :o)

/Websam
Avatar billede websam Nybegynder
27. juli 2004 - 00:14 #50
Pjat det er sq sent :

Function DbSelect()
    Try
    '--- Laver db forbindelse og henter data
    Catch
    '--- hvis der er fejl
    Finally
    '--- Lukker db forbindelse
End Function
Avatar billede snepnet Nybegynder
27. juli 2004 - 00:22 #51
Det er super.
Avatar billede websam Nybegynder
27. juli 2004 - 00:27 #52
Ok, en helt anden ting hvor i landet har du tag over hovedet ?
Avatar billede snepnet Nybegynder
27. juli 2004 - 00:31 #53
Mht det med sprog - så har du naturligvis ret. Teksterne skal du naturligvis angive selv, men der er gode muligheder for at få hjælp til at få tal og datoer præsenteret korrekt, og samtidig lade frameworket stå for udvælgelsen af de tekster der skal vises.
Men det kan være vi lige skal vente lidt med det.

Hvad arbejdede du i før du gik igang med .NET og VS - og hvor længe ?
Avatar billede snepnet Nybegynder
27. juli 2004 - 00:31 #54
Hvor jeg bor !?! hvorfor spørger du om det ?
Avatar billede websam Nybegynder
27. juli 2004 - 00:38 #55
Jeg har arbejdet meget med asp, vb, vba, html, css, photoshop, flash.......osv og det jeg gjort de seneste 5 - 6 år

Det med hvor du bor var fordi jeg vil prøve at samle et mindre hold der kunne mødes en gang imellem og udveksle erfaringer hvad angår programmereing, design og andre sjove ting til både internet og som programmer, men hvis du ikke er fra eller omkring trekants området (Jylland) er det jo nok for langt at skulle køre rundt, som ikke andet :o)

/websam
Avatar billede snepnet Nybegynder
27. juli 2004 - 00:45 #56
Ja det er jeg desværre ikke... Jeg bor på Sjælland. Det lød ellers som et godt arrangement.

Men websam... Jeg vil hoppe i æsken.

Vi skrives jo nok ved igen :o) - og hvis du har så lang erfaring synes jeg det ville være en god idé hvis du kiggede lidt på .NET globalization inden du laver for meget omkring det selv.
Jeg hjælper som sagt gerne.

Mvh - og sov godt.
Avatar billede websam Nybegynder
27. juli 2004 - 01:04 #57
Ja sov godt og jeg tror jeg er med på hvad du snakker om det er det her med at få sat dato, valuta osv. afhængigt af hvilket land personen kommer fra eller afhængigt af hvilket sprog brugerens browser har eller hvad man sætter den til at være ved valg af sprog !?!

/Websam
Avatar billede snepnet Nybegynder
27. juli 2004 - 08:40 #58
Jeps
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