Avatar billede simsen Mester
17. marts 2007 - 16:37 Der er 3 kommentarer og
1 løsning

date picker fungerer ikke med master.page

Hej,

Jeg har fundet en date picker tutorial på nettet, som jeg har testet. Den fungerer perfekt, når jeg gør det i en almindelige aspx side...altså uden master.page.

Når jeg forsøger at splitte den op - i masterpage og aspx side, så lukker den pludselig ikke popup vinduet længere og overfører ikke datoen til tekstfeltet

Nogen der kan fortælle, hvor det er jeg gør noget forkert?

******kode til date picker uden master page fil*****
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestDatoPicker.aspx.cs" Inherits="TestDatoPicker" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
        <title>Example Form</title>

        <script language="javascript" type="text/javascript">
            /// <summary>
            /// Launches the DatePicker page in a popup window,
            /// passing a JavaScript reference to the field that we want to set.
            /// </summary>
            /// <param name="strField">String. The JavaScript reference to the field that we want to set, in the format: FormName.FieldName
            /// Please note that JavaScript is case-sensitive.</param>
            function calendarPicker(strField)
            {
                window.open('DatePicker.aspx?field=' + strField,'calendarPopup','width=250,height=190,resizable=yes');
            }
        </script>
    </head>
    <body>
        <form id="Form1" method="post" runat="server">           
            <asp:textbox id="txtEventDate" runat="server" maxlength="10" columns="10" style="TEXT-ALIGN: right"></asp:textbox>
                        <a href="java script:;" onclick="calendarPicker('Form1.txtEventDate');" title="Pick Date from Calendar">
                            pick</a>
        </form>
    </body>
</html>


*******Kode til Date Picker med Masterpage*****
I Masterpage:
<head runat="server">
    <title>Test</title>
    <link href="netstyle.css" rel="stylesheet" />   
        <script language="javascript" type="text/javascript">
            /// <summary>
            /// Launches the DatePicker page in a popup window,
            /// passing a JavaScript reference to the field that we want to set.
            /// </summary>
            /// <param name="strField">String. The JavaScript reference to the field that we want to set, in the format: FormName.FieldName
            /// Please note that JavaScript is case-sensitive.</param>
            function calendarPicker(strField)
            {
                window.open('DatePicker.aspx?field=' + strField,'calendarPopup','width=250,height=190,resizable=yes');
            }
        </script>
</head>

aspx koden:
<asp:textbox id="txtEventDate" runat="server" maxlength="10" columns="10" style="TEXT-ALIGN: right"></asp:textbox>
                        <a href="java script:;" onclick="calendarPicker('Form1.txtEventDate');" title="Pick Date from Calendar">
                            pick</a>

******For begges vedkommende bruger jeg følgende Date picker side

aspx siden:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DatePicker.aspx.cs" Inherits="DatePicker" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Dato vælger</title>
    <style type="text/css">
        table { font-size: 9pt; font-family: Verdana }
        tr { font-size: 9pt; font-family: Verdana }
        td { font-size: 9pt; font-family: Verdana }
        a:link {color:#000000; text-decoration: none;}
        a:visited {color: #000000; text-decoration: none;}
        a:hover {color: #000000; text-decoration: none;)
    </style>
</head>
<body style="padding: 0px; margin: 0px 0px 0px 0px; font-family: Verdana; font-size: 9pt;">
    <form id="form1" runat="server">
    <div style="vertical-align: middle; text-align: center">
        <!--
        todaysdaystyle = dagen i dags baggrundsfarve og tekstfarve
        selectorstyle = ?
        nextprevstyle = næste/forrige (pilene) måneds style
        dayheaderstyle = Dagenes (teksten på dagene) style
        selecteddaystyle = valgte dag style
        titlestyle = titel style (måneds angivelse i tekst)
        othermonthdaystyle = de dage, der ikke hører til pågældende måned
        -->
        <asp:calendar id="Calendar1" runat="server" showgridlines="True" bordercolor="Black" OnDayRender="Calendar1_DayRender">
            <todaydaystyle forecolor="White" backcolor="#7EAACB"></todaydaystyle>
            <selectorstyle backcolor="#ffffff"></selectorstyle>
            <nextprevstyle font-size="9pt" forecolor="#ffffff"></nextprevstyle>
            <dayheaderstyle height="1px" backcolor="#7EAACB"></dayheaderstyle>
            <selecteddaystyle font-bold="True" backcolor="#B4CDE0"></selecteddaystyle>
            <titlestyle font-size="9pt" font-bold="True" forecolor="#ffffff" backcolor="#2F5673"></titlestyle>
            <othermonthdaystyle forecolor="#000000" BackColor="#E5E5E5"></othermonthdaystyle>
        </asp:calendar>
    </div>
    </form>
</body>
</html>

aspx.cs siden:
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        // Clear the link from this day
        e.Cell.Controls.Clear();

        // Add the custom link
        System.Web.UI.HtmlControls.HtmlGenericControl Link = new System.Web.UI.HtmlControls.HtmlGenericControl();
        Link.TagName = "a";
        Link.InnerText = e.Day.DayNumberText;
        Link.Attributes.Add("href", String.Format("java script:window.opener.document.{0}.value = \'{1:d}\'; window.close();", Request.QueryString["field"], e.Day.Date));

        // By default, this will highlight today's date.
        if (e.Day.IsSelected)
        {
            Link.Attributes.Add("style", this.Calendar1.SelectedDayStyle.ToString());
        }

        // Now add our custom link to the page
        e.Cell.Controls.Add(Link);
    }

mvh
simsen :-)
Avatar billede jens_klinting Nybegynder
17. marts 2007 - 16:52 #1
Jeg tror det er fordi, den kontrol du prøver at sætte den valgte dato ind i, har et andet id, end du tror p.g.a. at den nu ligger i en masterpage.

Så når du skriver:  <a href="java script:;" onclick="calendarPicker('Form1.txtEventDate');" title="Pick Date from Calendar">pick</a>
refererer du til en kontrol der ikke findes. Du kan evt. se kontrollernes id'er ved at slå Trace='true' til i page-directivet: <%@ Page ...... Trace="true" %>

Jeg synes også din Masterpage ser lidt underlig ud. Der plejer at skulle være en eller flere ContentPlaceholders på masterpagen, som så 'fyldes' ud på de sider, der benytter masterpagen.

Mvh.
Jens
Avatar billede simsen Mester
17. marts 2007 - 19:48 #2
Hejsa Jens

Der står følgende på siden:
<input name="ctl00$ContentPlaceHolder1$txtEventDate" type="text" maxlength="10" size="10" id="ctl00_ContentPlaceHolder1_txtEventDate" style="TEXT-ALIGN: right" />
                        <a href="java script:;" onclick="calendarPicker('ctl00_ContentPlaceHolder1_txtEventDate');" title="Pick Date from Calendar">
                            pick</a>

Jeg har så forsøgt mig med at skrive (som du kan se):
'ctl00_ContentPlaceHolder1_txtEventDate'
men også
'form1.ctl00_ContentPlaceHolder1_txtEventDate' og
'ContentPlaceHolder1_txtEventDate'

Ingen af disse virker - hvad skal jeg skrive?

Mht. Masterpage - så er der meget mere kode (her incl. ConcentPlaceholders) - der dog ikke havde relevans til koden, så jeg tog den ikke med....

mvh
simsen :-)
Avatar billede simsen Mester
17. marts 2007 - 20:18 #3
Hejsa Jens

Jeg fandt ud af, det var ikke kun Text controllen den havde navneændret.....men også formen.....

resultat, for at det fungerer skal være:

'aspnetForm.ctl00$ContentPlaceHolder1$txtEventDate'

Smid et svar og tak for hjælpen :-)

mvh
simsen :-)
Avatar billede jens_klinting Nybegynder
18. marts 2007 - 19:59 #4
:o)
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