private void RegisterReturnScript() { using (LogGroup logGroup = LogGroup.Start("Registering EntitySelectDeliverer return script.", NLog.LogLevel.Debug)) { string text = (string)WebControlUtilities.GetFieldValue(WebControlUtilities.FindControlRecursive(Page, TextControlID), "Text", typeof(String)); StringBuilder builder = new StringBuilder(); builder.Append("<script language='javascript' defer>\n"); builder.Append("window.opener.AddItem_" + GetRequesterID() + "('" + EntityID + "', '" + WebUtilities.EncodeJsString(text) + "');\n"); builder.Append("window.close();\n"); builder.Append("</script>\n"); if (!Page.ClientScript.IsClientScriptBlockRegistered("EntitySelectDelivererReturnScript")) { Page.ClientScript.RegisterClientScriptBlock(typeof(EntitySelectDeliverer), "EntitySelectDelivererReturnScript", builder.ToString()); } else { LogWriter.Debug("Return script already registered."); } } }
private void RegisterScript() { string selectClientID = WebControlUtilities.FindControlRecursive(Page, EntitySelectControlID).ClientID; string url = CreateNavigateUrl(); StringBuilder builder = new StringBuilder(); NameValueCollection transferData = ParseTransferData(); builder.Append("<script language='javascript' defer>\n"); builder.Append("function GetData_" + ClientID + "(key){\n"); foreach (string key in transferData.Keys) { Control control = WebControlUtilities.FindControlRecursive(Page, transferData[key]); if (control == null) { throw new Exception("No control found with ID of '" + transferData[key] + "'."); } string clientID = control.ClientID; builder.Append("if (key == '" + WebUtilities.EncodeJsString(key) + "'){\n"); builder.Append(" return document.getElementById('"+ clientID + "').value;\n"); builder.Append("}\n"); } builder.Append("}\n"); string height = WindowHeight.ToString().Replace("px", ""); string width = WindowWidth.ToString().Replace("px", ""); builder.Append("\n"); builder.Append("function NewItem_" + ClientID + "(){\n"); builder.Append(" var url = '"+ WebUtilities.EncodeJsString(CreateNavigateUrl()) + "';\n"); builder.Append(" var settings = 'Location=0,Scrollbars=1,Height="+ height + ",Width=" + width + "';\n"); builder.Append(" var win = window.open(url, 'AddItem_"+ Guid.NewGuid().ToString().Replace("-", "_") + "', settings);\n"); // TODO: Check if the following line should be used instead of the one above. The one above makes every window // title unique so that new windows aren't prevented from opening (by ID being in use) // The following line uses a predictable title which is good for integration testing but means windows could be blocked from opening //builder.Append(" var win = window.open(url, 'AddItemTo" + EntityType + "', settings);\n"); //builder.Append(" var url = " + CreateNavigateUrl() + "\n"); builder.Append("}\n"); builder.Append("\n"); builder.Append(@"function AddItem_" + ClientID + @"(id, text){ if (id == '" + Guid.Empty.ToString() + @"') alert('Cannot add item with Guid.Empty value.'); var newOption = document.createElement('option'); newOption.value = id; newOption.text = text; newOption.selected = true; // Only used while debugging. Leave commented out //alert(id + ' - ' + text); var field = document.getElementById('" + selectClientID + @"') if (field == null) alert('" + selectClientID + @" field not found.'); //field.appendChild(newOption) try { field.add(newOption, null); // standards compliant; doesn't work in IE } catch(ex) { field.add(newOption); // IE only } } " ); builder.Append("</script>\n"); //if (!Page.ClientScript.IsClientScriptBlockRegistered("EntitySelectRequesterScript")) Page.ClientScript.RegisterClientScriptBlock(typeof(EntitySelectRequester), "EntitySelectRequesterScript", builder.ToString()); }
static public bool IsType(Control field, Type type) { return(WebControlUtilities.IsType(field, type)); }
private void RegisterScript() { using (LogGroup logGroup = LogGroup.Start("Registering EntitySelectDeliverer script.", NLog.LogLevel.Debug)) { //string url = CreateNavigateUrl(); StringBuilder builder = new StringBuilder(); builder.Append("<script language='javascript' defer>\n"); builder.Append("function AcceptTransfer_" + ClientID + "(){\n"); if (TransferFields != String.Empty) { LogWriter.Debug("Transfer fields: " + TransferFields); foreach (string fieldID in TransferFields.Split(',')) { if (fieldID != String.Empty) { LogWriter.Debug("Transfer fields include: " + fieldID); Control control = WebControlUtilities.FindControlRecursive(Page, fieldID); if (control == null) { throw new Exception("No control found with ID of '" + fieldID + "'."); } string clientID = control.ClientID; builder.Append("var field = document.getElementById('" + clientID + "');\n"); builder.Append("if (field == null)\n"); builder.Append("alert('Field not found: " + clientID + "');\n"); builder.Append("field.value = GetTransferValue_" + ClientID + "('" + fieldID + "');\n"); builder.Append("\n"); } } } else { LogWriter.Debug("No transfer fields specified."); } builder.Append("}\n"); builder.Append("\n"); builder.Append("function GetTransferValue_" + ClientID + "(id){\n"); builder.Append(" return window.opener.GetData_"+ GetRequesterID() + "(id);\n"); builder.Append("}\n"); builder.Append("</script>\n"); //if (!Page.ClientScript.IsClientScriptBlockRegistered("EntitySelectDelivererScript")) Page.ClientScript.RegisterClientScriptBlock(typeof(EntitySelectDeliverer), "EntitySelectDelivererScript", builder.ToString()); // Start up script StringBuilder startUpBuilder = new StringBuilder(); startUpBuilder.Append("AcceptTransfer_" + ClientID + "();"); Page.ClientScript.RegisterStartupScript(typeof(EntitySelectDeliverer), "EntitySelectDelivererStartUpScript", startUpBuilder.ToString(), true); } }
static public object GetFieldValue(Control field, string controlValuePropertyName, Type returnType) { return(WebControlUtilities.GetFieldValue(field, controlValuePropertyName, returnType)); }