[C#] DataBind in Custom Control werkt niet

Pagina: 1
Acties:

  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Ik wil aan een eigen gemaakte custom control een dynamisch
veld toekennen.

De volgende code die geeft de juiste vertaling van
het textattribuut. Er staat dus netjes als Text voor de button "Cancel" mits
je uiteraard in je Page_Load: DataBind() declareer.

C#:
1
2
3
4
5
6
    <asp:button
        Id="button_cancel"
        Runat="server"
        Text='<%#Lang.GetValue("button_cancel")%>'
        Style="width:100px;"
    />


Wanneer ik in mijn eigen custom control gebruik maakt van <%# word het niet vertaald, het veld blijft dus leeg terwijl het bij de webcontrol button wel werkt.

Hoe kan ik nou in mijn eigen custom control De <%# Gebruiken zodat dit vertaald word. Je kan in je custom control de OnDataBind gebruiken maar wat zou ik daar dan moeten neerzetten zodat dit vertaald word.

Hopelijk dat iemand de oplossing heeft

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
In de On_PageLoad zijn de custom controls nog niet beschikbaar, misschien heeft het daarmee te maken.
In de OnPreRender zijn ze wel beschikbaar.

https://fgheysels.github.io/


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
whoami schreef op 09 October 2003 @ 11:29:
In de On_PageLoad zijn de custom controls nog niet beschikbaar, misschien heeft het daarmee te maken.
In de OnPreRender zijn ze wel beschikbaar.
Dat is niet het probleem, Het probleem is dat het bij een webcontrol werkt maar niet bij mijn eigen gemaakte control. Wat er tussen <%# ... %> word dus niet vertaald door mijn eigen gemaakte control Terwjl het wel door een webcontrol vertaald word in dit geval button. Dus dat moet kunnen, maar hoe.

Mijn vraag is hoe je dit kan laten vertalen wat daar tussen staat in je control en hoe je dat kan afvangen. Ik dacht dus in de onDataBind maar ja wat moet ik daar dan precis vermelden zodat ie het vertaald.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Waarom doe je het eigenlijk op die manier, waarom maak je geen gebruik van code-behind?

Je kan daar dan toch ook perfect:
code:
1
MyControl.MyProperty = MyResourceManager.GetValue("something");

doen?

https://fgheysels.github.io/


  • mabarto
  • Registratie: Februari 2001
  • Laatst online: 26-04 19:14
Omdat het makkelijker te beheren is in een ASPX bestand
om zo'n control aan te passen. Want nu werk ik met een XML bestand die ik uitlees en daaraan lees ik het veld ID uit en die vertaal ik dan. Maar het zou makkelijker zijn als ik alleen dit hoeft op te geven.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
            <Maraex:MenuBar runat="server" 
                ID="MenuBar"
                Target="top.contentPageFrame"
                ImagePath="/images/page" 
                DefaultClass="default" 
                HoverClass="hover" 
                HoverOutClass="hoverOut" 
                HoverDownClass="hoverDown" 
            >
                <Maraex:MenuBarItem 
                    Name="Page" 
                    ImageUrl="properties.gif" 
                    Url="modifyPage.aspx" 
                    Text="Pagina" 
                />
                
                <Maraex:MenuBarItem 
                    Name="Editor" 
                    ImageUrl="editor.gif" 
                    Url="modifyPageEditor.aspx" 
                    Text="Editor" />
                    
                <Maraex:MenuBarItem 
                    Name="Components" 
                    ImageUrl="components.gif" 
                    Url="modifyPageComponents.aspx" 
                    Text="Components" 
                />
                
                <Maraex:MenuBarItem 
                    Name="Preview" 
                    ImageUrl="preview.gif" 
                    Url="previewPage.aspx" 
                    Text="Preview" 
                />
                
            </Maraex:MenuBar>


Zo ziet mijn control eruit ensow en wil eigenlijk de text dus dynamisch maken zodat ik er een vertaling van kan maken. dus dat het dit word bv.

C#:
1
2
3
4
5
6
7
<Maraex:MenuBarItem 
                    Name="Preview" 
                    ImageUrl="preview.gif" 
                    Url="previewPage.aspx" 
                    Text='<%#Lang.getValue("Preview")%>' 
                />
                


Want nu heb ik het dus opgelost door het volgende XML bestand:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0"?>
<menuitem>
    <item id="page_menu_properties">
        <image_url>properties.gif</image_url>
        <url>modifyPage.aspx</url>
    </item>
    <item id="page_menu_editor">
        <image_url>editor.gif</image_url>
        <url>modifyPageEditor.aspx</url>
    </item>
    <item id="page_menu_components">
        <image_url>components.gif</image_url>
        <url>modifyComponents.aspx</url>
    </item>
    <item id="page_menu_preview">
        <image_url>preview.gif</image_url>
        <url>previewPage.aspx</url>
    </item>
</menuitem>


Nu lees ik in mijn codebehind dus wat jij zegt die values uit en vertaal ik het. Maar vind het makkelijker beheersbaar als ik het direct al in de control kan vertalen.

[ Voor 17% gewijzigd door mabarto op 09-10-2003 13:42 ]