Avatar billede c_k Nybegynder
22. september 2004 - 16:57 Der er 21 kommentarer og
1 løsning

sætte cssclass på parent control

hvordan kan jeg får lov at sætte cssclass på "div0" når jeg trykker på btn0.

<div id="div0" runat="server">
<asp:button id="btn0"  runat="server" text="hej" />
</div>

der jeg er nået til >>>

Sub Css_Click(Sender As Object, E As EventArgs)
    Dim s As Button = CType(Sender, Button)
        s.Parent.????????????????????

End Sub
Avatar billede snepnet Nybegynder
22. september 2004 - 16:58 #1
s.CssClass = "dinklasse"
Avatar billede snepnet Nybegynder
22. september 2004 - 16:59 #2
ja det var jo flot... sorry der :o)
Avatar billede snepnet Nybegynder
22. september 2004 - 17:02 #3
hvorfor har du en div i koden, som kører runat=server... kan du ikke bruge f.eks. et Panel istedet ?
Avatar billede c_k Nybegynder
22. september 2004 - 17:04 #4
jeg har det fordi det er det jeg har valgt at bruge.. :)

s.Parent.CssClass Virker ikke Da Control i sig selv ikke har en property der hedder cssclass :(
Avatar billede snepnet Nybegynder
22. september 2004 - 17:06 #5
Så kan du tilgå den programmatisk som et panel der "ud af posen" giver dig en CssClass property.... Så ser det så pænt ud det hele :o)
(og et panel renderes som en <div>)
Avatar billede snepnet Nybegynder
22. september 2004 - 17:10 #6
F.eks. sådan her :

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 EXP2
{
    public class WebForm1 : System.Web.UI.Page
    {
        protected HtmlForm Form1;
        protected Panel panel;
        protected Button btn;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            panel = new Panel();
            btn = new Button();
            btn.Click += new EventHandler(btn_Click);
            panel.Controls.Add(btn);
            Form1.Controls.Add(panel);
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void btn_Click(object sender, EventArgs e)
        {
            this.panel.CssClass = "dinKlasse";
        }
    }
}
Avatar billede snepnet Nybegynder
22. september 2004 - 17:13 #7
Det giver dig nedenstående output i browseren - efter du har trykket på knappen :

<div class="dinKlasse">
  <input type="submit" name="_ctl1" value="" />
</div>

Er det ikke ok ?

mvh
Avatar billede snepnet Nybegynder
22. september 2004 - 17:23 #8
Men bortset fra det kan du selvfølgelig godt skrive til en serverside <div>.
du kan deklerere den i koden som en

protected HtmlGenericControl someDiv;

og skrive din class ind med
someDiv.Attributes.Add("class","someClass");

hvis du ikke vil have deklerationen, kan du også bare typecaste parent.

((HtmlGenericControl)s).Attributes.Add("class","someClass");

skal jeg smide det herud i på VB'sk ?
(ellers er der link til oversætter her : http://www.developerfusion.com/utilities/convertcsharptovb.aspx)

mvh
Avatar billede c_k Nybegynder
22. september 2004 - 17:43 #9
hmm....kan sg ik få det til at funge.

jeg er fast besluttet på at beholde mine div tags.

kan du hjælpe med at få inkorporeret dine eksempler i mit

<div id="div0" runat="server">
<asp:button id="btn0"  runat="server" text="hej" />
</div>

der jeg er nået til >>>

Sub Css_Click(Sender As Object, E As EventArgs)
    Dim s As Button = CType(Sender, Button)
        s.Parent.????????????????????

End Sub
Avatar billede snepnet Nybegynder
22. september 2004 - 17:48 #10
jeps... prøver lige den onlineoversætter der :o)

CType(s.Parent, HtmlGenericControl).Attributes.Add("class", "someClass")

hvordan går det med den ?
Avatar billede c_k Nybegynder
22. september 2004 - 18:31 #11
no....men dine paneler virker perfekt, og de har hermed erstattet mine divs....suppercool

tnx

vil du have points ?
Avatar billede snepnet Nybegynder
22. september 2004 - 18:39 #12
nå men når enden er go' :o)

hvad er det du ikke kunne få til at virke ? (der er ikke noget af det jeg har sendt der ikke virker hos mig).

mvh
Avatar billede c_k Nybegynder
22. september 2004 - 19:12 #13
denne virker

Sub Css_Click(Sender As Object, E As EventArgs)
    Dim s As Button = CType(Sender, Button)
    CType(s.Parent, Control).CssClass = "class"
End Sub
Avatar billede snepnet Nybegynder
22. september 2004 - 19:16 #14
ok... jeg har nu heller ikke noget ballade med at caste en "classic" div til en HtmlGenericControl, men... når bare det dutter :o)
Avatar billede c_k Nybegynder
22. september 2004 - 19:37 #15
så ville du gøre sådan her ik ?


Sub Css_Click(Sender As Object, E As EventArgs)
    Dim s As Button = CType(Sender, Button)
    CType(s.Parent, HtmlGenericControl).Attributes.Add("class", "class_on")
End Sub
Avatar billede snepnet Nybegynder
22. september 2004 - 19:46 #16
Jeps - det virker fint hos mig (i en C#-pendant), men hvis du "bare" har et panel, med nogle andre kontroller på, ville jeg nok stadig bare bruge noget i stil med det jeg skrev 17:10:38.... Der er ingen behov for at typecaste eller noget - det er bare lige ud af landevejen.

Bare smid mere kode, hvis der er andet der driller.

mvh :o)
Avatar billede c_k Nybegynder
22. september 2004 - 20:13 #17
hehe....troede blank på det du skrev
Kommentar: snepnet, 22/09-2004 17:13:55 >>>

Det giver dig nedenstående output i browseren - efter du har trykket på knappen :

<div class="dinKlasse">
  <input type="submit" name="_ctl1" value="" />
</div>
__________________________________________________

dette outputter ikke divs men tables :(
kan du tilfældigvis huske hvilken kontrol der udskriver divs ?
Avatar billede snepnet Nybegynder
22. september 2004 - 20:21 #18
Jamen den kode jeg skrev i 17:10:38 genererer også det output der står i 17:13:55 (altså pakket ind i diverse headers mv).

Denne kode :

<div class="dinKlasse">
  <input type="submit" name="_ctl1" value="" />
</div>

Skal du ikke skrive noget sted... Det er resultatet at du sætter et Panel ind programmatisk ved kode som dette :

            panel = new Panel();
            btn = new Button();
            btn.Click += new EventHandler(btn_Click);
            panel.Controls.Add(btn);
            Form1.Controls.Add(panel);

Panelet renderes som en div, og en Button renderes som <input type="submit" ...

Hvad er det for noget kode du har fået tabeller ud af ?

Men... noget helt andet. Hvilket udviklingsmiljø bruger du ?
(det er mere, hvis jeg sender flere eksempler til dig).

mvh
Avatar billede snepnet Nybegynder
22. september 2004 - 20:22 #19
og lige det sidste.... hvilken browser bruger du ?
(visse serverkontroller kan renderes forskelligt afhængig af hvilken browser du bruger).
Avatar billede c_k Nybegynder
22. september 2004 - 20:34 #20
tja...det er rigtig nok....

mozilla, tables

ie, div
Avatar billede snepnet Nybegynder
22. september 2004 - 20:51 #21
jep... det er sikkert rigtigt.
det er noget der står i machine.config, under browsercaps (som for øvrigt ikke vedligeholdes af microsoft så vidt jeg ved).
Avatar billede c_k Nybegynder
22. september 2004 - 21:12 #22
kigger lige på lidt det....tnx
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