2010-09-10 7 views
0

J'ai un lien qui se trouve dans un contrôle de contenu. Ce lien appelle une fonction javascript qui ouvre une fenêtre contextuelle contenant un calendrier et lui transmet l'identifiant transformé du serveur d'un contrôle de zone de texte à l'aide de clientid. Je dois être capable de cliquer sur une date et faire fermer la fenêtre et insérer la date dans la zone de texte de l'identifiant que j'ai passé dans la fonction qui, encore une fois, se trouve dans le contrôle de contenu.Popup doit renvoyer à la zone de texte dans un contrôle de contenu

C'est le lien dans le contrôle du contenu:

<a title="Pick Date from Calendar" onclick="calendarPicker('form1.<%= txtstart.ClientId %>');" href="javascript:void(0);"> 

Ceci est le javascript dans le masterpage:

<script type="text/javascript"> 
function calendarPicker(strField) { 
    var strField = window.open('DatePicker.aspx?field=' + strField, 'calendarPopup', 'width=250,height=190,resizable=yes'); 
} 

Le calendrier est un contrôle de calendrier à l'intérieur de sa propre page et ceci est le codebehind:

Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender 
     Dim link As New System.Web.UI.HtmlControls.HtmlGenericControl 
Dim strLink As String 
e.Cell.Controls.Clear() 
link.TagName = "a" 
link.InnerText = e.Day.DayNumberText 
strLink = "JavaScript:window.opener.document." & Request.QueryString("Field") & ".value = '" & e.Day.Date & "'; window.close();" 
link.Attributes.Add("href", strLink) 
If (e.Day.IsSelected) Then 
    link.Attributes.Add("style", Calendar1.SelectedDayStyle.ToString()) 
End If 
e.Cell.Controls.Add(link) 
End Sub 

Je dois aussi mentionner l'erreur que je reçois est:

window.opener.document.form1 est indéfini

+0

Quelle est votre question? –

+0

Je reçois une erreur javascript et ne renvoie pas à la fenêtre d'origine et la valeur de la zone de texte à la valeur de la date –

Répondre

0

ne pas utiliser document.form1. utilisez document.getElementById(strField). vous devrez également fixer votre appel à calendarPicker. calendarPicker('<%= txtstart.ClientId %>');

ne mettez pas javascript dans la propriété href. utiliser link.Attributes.Add("onclick", strLink)

+0

Eh bien, si je n'utilise pas une page maître, tout fonctionne comme je l'ai. Je vais faire les changements que vous suggérez et voir ce qui fonctionne. –

+0

Je fais des suppositions éclairées puisque nous ne savons pas à quoi ressemble votre page actuelle. poster une sortie HTML si ces suggestions ne vous aident pas. – lincolnk