Avatar billede bsp_andreas Nybegynder
20. august 2004 - 10:01 Der er 8 kommentarer og
1 løsning

Rolldown i javascript i asp.net

Hej.
Jeg har et lille problem som nogen måske kan hjælpe mig med.
Jeg har fundet et rigtig sejt userControl til asp.net (http://www.codeproject.com/aspnet/asppopup.asp) som bruges til at lave et popup på skærmen. Mit problem er at denne popup "ruller" op i stedet for ned. Jeg vil gerne at den falder ned ligesom en slags menu-ting (den skal ikke bruges til at lave menu)

Selve koden er skrevet i c# til asp.net, men inden i ligger der javascript til at styre det.

Nu er mit spørgsmål om nogen kan hjælpe med at ændre koden, således at jeg får komponenten til at "rulle" ned i stedet for op.

Jeg har arbejdet mig frem til at javascriptet ligger i den fil som hedder: PopupWin.cs

Det er lidt besværligt, men måske nogen kan overskue det
Avatar billede snepnet Nybegynder
23. august 2004 - 12:33 #1
Hej andreas.... Hvad med denne her :
http://www.bosrup.com/web/overlib/

Blev lige opmærksom på den her :
http://www.eksperten.dk/spm/532053

Jeg kan godt pakke den ind i en kontrol for dig hvis det skal være.
Avatar billede bsp_andreas Nybegynder
23. august 2004 - 15:13 #2
tjah - den kunne absolut bruges i stedet for.
Takker og der er point - selvom du ikke svarede på spørgsmålet :)
Avatar billede bsp_andreas Nybegynder
23. august 2004 - 15:14 #3
men kunne du vise hvordan man pakkede det ind i et UserControl i asp.net???
Avatar billede snepnet Nybegynder
30. august 2004 - 02:54 #4
or hulen - jeg har slet ikke set at du har skrevet her andreas. det er jeg ked af :o(

jeg vil meget gerne hjælpe dig med at "pakke den ind".... Jeg kan ikke lige lave en superduper forkromet løsning, men du kan lige få et par idéer :

Hvis du starter med at lave en klasse der kan fravriste en assembly et overlibscript sådan her :
(kræver at overlib.js ligger som embedded resource i din assembly).

public class Scripts   
{
    public static string OverlibScriptName
    {
        get{return "overlib";}
    }

    public static void EnsureOverlib(Page page)
    {
        if(!page.IsStartupScriptRegistered(OverlibScriptName))
            page.RegisterStartupScript(OverlibScriptName, ScriptBuilder.CreateScriptBlock(new string[] {OverlibScriptName+".js"}));
    }

    protected class ScriptBuilder
    {
        public static string ScriptBeginBlock
        {
            get{return @"<script language=""javascript"">";}
        }

        public static string ScriptEndBlock
        {
            get{return @"</script>";}
        }

        public static string CreateScriptBlock(string[] scriptNames)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(ScriptBeginBlock);
       
            foreach(string s in scriptNames)
                sb.Append(ScriptResourceReader.GetScriptFileContent(s));

            sb.Append(ScriptEndBlock);

            return sb.ToString();
        }
    }
   
    protected class ScriptResourceReader
    {
        public static string GetScriptFileContent(string scriptFileName)
        {
            using (StreamReader reader = new StreamReader(typeof(ScriptResourceReader).Assembly.GetManifestResourceStream("EXP.Scripts." + scriptFileName)))
            {
                return reader.ReadToEnd();
            }
        }
    }
}

Så ville du kunne skrive en specialiceret kontrol (som her en knap) - der kunne sætte mouseoverteksten ind "overlib-style":

public class OverlibButton : Button
{
    private string mouseOverText;

    public string MouseOverText
    {
        get{return mouseOverText;}
        set{mouseOverText = value;}
    }

    public OverlibButton()
    {
    }

    public OverlibButton(string mouseOverText)
    {
        this.mouseOverText = mouseOverText;
    }

    protected override void OnPreRender(EventArgs e)
    {
        if(MouseOverText != null)
        {
            Scripting.Scripts.EnsureOverlib(this.Page);
            Attributes.Add("onmouseover","overlib('"+ MouseOverText +"');");
            Attributes.Add("onmouseout","nd();");

        }
        base.OnPreRender (e);
    }
}


Og en kontrol der kunne sætte det nødvendige div ind, hvis det skulle være :
(her med en metode så objektet kan bruges som hjælper ... du får et eksempel nedenunder):

public class OverlibControl : Control
{
    public void AddOverlibMouseOver(WebControl target, string mouseOverText)
    {
        target.Attributes.Add("onmouseover","overlib('"+mouseOverText+"');");
        target.Attributes.Add("onmouseout","nd();");
    }

    protected override void Render(HtmlTextWriter writer)
    {
        writer.Write(@"<div id=""overDiv"" style=""position:absolute; visibility:hidden; z-index:1000;""></div>");
    }
}


Ovenstående kunne du bruge sådan lidt i denne stil :
(i page_load)

// her bruges den specielle overlibknap
this.Form1.Controls.Add(new OverlibButton("hej med dig"));

// her sættes det nødvendige div ind
OverlibControl overlib = new OverlibControl();   
Body.Controls.Add(overlib);

// her laver vi en ny knap
Button b = new Button();
// bruger overlib objektet til at hjælpe her
overlib.AddOverlibMouseOver(b, "hvad så der ?");

// og klasker den ind
this.Form1.Controls.Add(b);

Det er ikke fordi det ligefrem er supergennemtænkt det her... men så kan du da lige se et par idéer.

Håber du kan få et eller andet ud af det - det virker sådan set fint nok her.
mvh
Avatar billede snepnet Nybegynder
30. august 2004 - 02:55 #5
og du kan lige få et svar her, hvis det skulle være ok.
mvh
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 09:31 #6
Jeg takker mange gange for hjælpen - tror godt jeg kan bruge det! Men må desværre udsætte det indtil videre da noget andet skal være færdigt først.
Avatar billede snepnet Nybegynder
30. august 2004 - 09:38 #7
det er bare helt iorden andreas - du siger bare til hvis du kommer tilbage til det :o)
mvh
Avatar billede bsp_andreas Nybegynder
30. august 2004 - 09:42 #8
jeps - men komponenten i sig selv bruger jeg og den fungere som den skal - chefen er helt vild med den :)

Han laver faktisk ikke andet end at sidde og trykke på den :D
Avatar billede snepnet Nybegynder
30. august 2004 - 10:08 #9
Haha :o) - jamen det er jo super !
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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