Avatar billede Driton Seniormester
02. marts 2018 - 18:47 Der er 1 kommentar og
1 løsning

Kalde metoder i javascript fra codebehind

Jeg har leget lidt med at kalde javascript klasser i codebehind. Når jeg kalder dem første gang, så virker det. Men anden gang, så selvom programmet lopper igennem den samme kode igen sker der ikke noget.

Hvor jeg prøver at kalde den igen fra

protected void DropDownList7_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (DropDownList7.SelectedValue == "Retur")
        {
            Panel3.Visible = true;
            Panel5.Visible = true;

            DropDownList5_SelectedIndexChanged(this, EventArgs.Empty);
      }
}

Det sted jeg kalder den første gang

protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
    {

        hentrejse();
        hentrejseretur();

        ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "MyFun1", "hentdato();", true);

        if (DropDownList7.SelectedValue == "Retur")
        {
            ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "MyFun2", "hentdatoo();", true);
        }

    }

Denne stykke kode kan godt køres når jeg kalder denne metode fra asp.net siden med autopostback. Men når jeg kalder den anden metode DropDownList7_SelectedIndexChanged fra asp.net siden, som går inden og kalder denne her klasse. Så kører den koden igennem, men intet sker.

Min javascript ser sådan her ud

<script>
    var datelist = [];
 
    $(document).ready(function () {
        $("#datepicker").datepicker({
            beforeShowDay: function (d) {
                // normalize the date for searching in array
                var dmy = "";
                dmy += ("00" + d.getDate()).slice(-2) + "-";
                dmy += ("00" + (d.getMonth() + 1)).slice(-2) + "-";
                dmy += d.getFullYear();
                if ($.inArray(dmy, datelist) >= 0) {
                    return [true, ""];
                }
                else {
                    return [false, ""];
                }
            }, dateFormat: "yy-mm-dd "
        });
    });

    function hentdato() {

            datelist = [];
            _myBool = $("#HiddenField1");
         
            var result = _myBool.val();
            datelist = result.split(",");
            $("#datepicker").datepicker("refresh");

    }
    </script>
    <script>
    var datelist2 = [];
 
    $(document).ready(function () {
        $("#datepicker2").datepicker({
            beforeShowDay: function (d) {
                // normalize the date for searching in array
                var dmy = "";
                dmy += ("00" + d.getDate()).slice(-2) + "-";
                dmy += ("00" + (d.getMonth() + 1)).slice(-2) + "-";
                dmy += d.getFullYear();
                if ($.inArray(dmy, datelist2) >= 0) {
                    return [true, ""];
                }
                else {
                    return [false, ""];
                }
            }, dateFormat: "yy-mm-dd "
        });
    });

    function hentdatoo() {

            datelist2 = [];
            _myBool = $("#HiddenField2");
            var result = _myBool.val();
            datelist2 = result.split(",");
            $("#datepicker2").datepicker("refresh");

    }
</script>
Avatar billede Driton Seniormester
02. marts 2018 - 18:54 #1
Jeg mistænker lidt det har noget, at gøre med. DropDownList5_SelectedIndexChanged ligger inde i en updatepanel, så køres Page_load ikke og den anden del gør ikke?
Avatar billede Driton Seniormester
02. marts 2018 - 19:42 #2
Har fikset det, det var noget at gøre med Page_load. Så sæt dem ind i updatepanel
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