si così viene ricaricata la pagina, l'alternativa è :
pagina madre:
private void ScriptIniection()
{
StringBuilder mySB = new StringBuilder(Request.ApplicationPath);
int _SbLength = mySB.Length - 1;
if(mySB[mySB.Length -1 ].ToString() == "/") mySB.Replace("/","",_SbLength,1);
StringBuilder sb = new StringBuilder("\n<script language=\"javascript\" type=\"text/javascript\">\n");
sb.Append("function calendarPicker(strField)\n");
sb.Append("{\n");
sb.Append("window.open('");
sb.Append(mySB.ToString()+"/userControl/Calendar.aspx");
sb.Append("?field=' + strField,'calendarPopup','width=250,height=210,resizable=yes');\n");
sb.Append("\n}\n<");
sb.Append("/");
sb.Append("script>");
if(!this.Page.IsStartupScriptRegistered("popCalendar"))this.Page.RegisterStartupScript("popCalendar",sb.ToString());
}
private void MakeLink()
{
string formName = null;
//cerco il nome del form
foreach(System.Web.UI.Control i in this.Page.Controls )
{
object ob = i as HtmlForm;
if (ob != null)
{
formName = ((HtmlForm)i).Name.ToString();
}
}
StringBuilder mySB = new StringBuilder(Request.ApplicationPath);
int _SbLength = mySB.Length - 1;
if(mySB[mySB.Length -1 ].ToString() == "/") mySB.Replace("/","",_SbLength,1);
StringBuilder sb = new StringBuilder("calendarPicker('");
sb.Append(formName);
sb.Append(".");
sb.Append(Date.ClientID.ToString());
sb.Append("');");
calendar.Attributes.Add("href","javascript:;");
calendar.Attributes.Add("onclick",sb.ToString());
}
nel popoup:
Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.{0}.value = \'{1}\'; window.close();", Request.QueryString["field"], e.Day.Date.ToString("dd/MM/yyyy")));
ho messo solo il codice del link che chiude la popup e passa il valore
ciao marco
p.s. il codice lo scritto un annetto fa , ma gari sipuò migliorare :)