protected void pickBtn_Click(object sender, EventArgs e) { try { Button pickBtn = (Button)sender; string targetFieldId = pickBtn.Attributes["targetFieldId"].ToString(); string fieldName = pickBtn.Attributes["inputFieldName"].ToString(); hdnCurTargetControlIdForGridvalue.Value = targetFieldId; Dictionary <string, PEValidator> validatorList = Session["validatorDictionary"] as Dictionary <string, PEValidator>; PEValidator curValidator = validatorList[fieldName]; IDatabaseFunctionsManager db = DBManagerFactory.GetDBManager(activeDB, conStringLOV_SQL); DataTable dt = db.GetDataTable(curValidator.LOVValue); DataTable dtCloned = CloneDataTableWithAllColumnStringDataType(dt); gvPopup.DataSource = dtCloned; Session["GridDataTable"] = dtCloned; gvPopup.DataBind(); modalGrid.Show(); } catch (Exception ex) { ScriptManager.RegisterStartupScript(Page, typeof(Page), "errorExists", "<script>$(document).ready(function(){alert('Cannot load the grid.\\nSQL in the LOVP is not correct for this field or Connection string invalid.')});</script>", false); } }
private void LoadRestrictions(string tableName, string groupName) { if (conString == "") { throw new Exception("CONN_STR_ERROR"); } IDatabaseFunctionsManager dbHlr = DBManagerFactory.GetDBManager(activeDB, conString); DataTable dt = dbHlr.GetDataTable(dbHlr.GetQuery(tableName, groupName)); Session["metadata"] = dt; }
bool CheckInputConsistentWithList(PEValidator validator, string value) { IDatabaseFunctionsManager db = DBManagerFactory.GetDBManager(activeDB, conStringLOV_SQL); DataTable dt = db.GetDataTable(validator.LOVValue); string fieldName = validator.FieldName; DataType curType = (DataType)Enum.Parse(typeof(DataType), validator.ValueType, true); bool fieldExists = false; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName.ToLower() == fieldName.ToLower()) { fieldExists = true; break; } } if (fieldExists) { foreach (DataRow record in dt.Rows) { if (curType == DataType.Date) { if (record[fieldName].ToString().Trim() != Convert.ToDateTime(record[fieldName]).ToString("dd-MM-yyyy")) { return(true); } } else { if (record[fieldName].ToString() == value) { return(true); } } } } return(false); }
private ControlIDWithType CreateElement(string fieldName, string userInputValue, PEValidator validator) { ControlIDWithType idType = new ControlIDWithType(); string value = userInputValue; if (value.Trim() == string.Empty && validator.DefaultValue != null) { value = validator.DefaultValue.ToString(); } Label lbl = new Label(); lbl.ID = string.Concat("lbl", fieldName); lbl.Style.Add("width", "100%"); if (validator.Caption != string.Empty) { lbl.Text = validator.Caption.ToFirstCharUpper(); } else { lbl.Text = fieldName.ToFirstCharUpper(); } HtmlGenericControl divLabels = new HtmlGenericControl("div"); divLabels.Style.Add("padding-right", "10px"); divLabels.Style.Add("text-align", "right"); divLabels.Controls.Add(lbl); TextBox txtBx = new TextBox(); DropDownList ddl = new DropDownList(); HtmlGenericControl divControl = new HtmlGenericControl("div"); DataType curType = (DataType)Enum.Parse(typeof(DataType), validator.ValueType, true); if (validator.LovType == EnumLovType.Lovc || validator.LovType == EnumLovType.Lovcp) { ddl.ID = string.Concat("ddl", fieldName); ddl.ToolTip = validator.ToolTip; ddl.Attributes.Add("onchange", "SelectDDLValue(this,'txtddl" + fieldName + "')"); ddl.Style.Add("z-index", "-100"); hdnDrpIDs.Value += ddl.ID + ","; if (validator.LovType != EnumLovType.Lovc || (validator.LovType == EnumLovType.Lovc && validator.LOVValue.Trim().ToLower().StartsWith("select"))) { IDatabaseFunctionsManager db = DBManagerFactory.GetDBManager(activeDB, conStringLOV_SQL); DataTable dt = db.GetDataTable(validator.LOVValue); if (IsColumnExistInTable(dt, fieldName)) { if (curType != DataType.Date) { ddl.DataSource = dt; ddl.DataTextField = fieldName; ddl.DataValueField = fieldName; } else { List <string> dates = new List <string>(); foreach (DataRow record in dt.Rows) { if (record[fieldName].ToString().Trim() != "") { dates.Add(Convert.ToDateTime(record[fieldName]).ToString("dd-MM-yyyy")); } } ddl.DataSource = dates; } } } else { char delimiter = validator.LOVValue[0]; //if (validator.LOVValue.StartsWith("/")) // delimiter = '/'; //else if (validator.LOVValue.StartsWith(";")) // delimiter = ';'; //else delimiter = ','; string[] valueList = validator.LOVValue.Split(delimiter); ddl.DataSource = valueList.Where <string>(val => val != string.Empty).ToList <string>(); } ddl.DataBind(); for (int i = 0; i < ddl.Items.Count; i++) { if (ddl.Items[i].Value.ToLower() == userInputValue.ToLower()) { ddl.Items[i].Selected = true; break; } } divControl.Controls.Add(ddl); idType.ID = ddl.ID; idType.Type = ControlType.DropDownList; if (validator.AllowEdit && validator.LovType == EnumLovType.Lovcp) { ddl.Style.Add("width", validator.ActualLength - 14 + "px"); } else { ddl.Style.Add("width", validator.ActualLength + 4 + "px"); } if (validator.AllowEdit) { if (validator.LovType == EnumLovType.Lovcp) { CreatePickButton(ddl.ID, fieldName, ref divControl); } // Text box for editing dropdown list. txtBx.ID = string.Concat("txtddl", fieldName); txtBx.Style.Add("position", "absolute"); txtBx.Style.Add("display", "none"); txtBx.Style.Add("border-style", "none"); if (!userInputValue.Trim().Equals(string.Empty)) { if (ddl.SelectedValue != null && ddl.SelectedValue != "") { if (ddl.SelectedValue.Trim().ToLower() == userInputValue.Trim().ToLower()) { txtBx.Text = ddl.SelectedValue; } else { txtBx.Text = userInputValue; } } } else { txtBx.Text = ddl.SelectedValue; } divControl.Controls.Add(txtBx); txtBx.ToolTip = validator.ToolTip; } else { ddl.Enabled = false; } //if (!validator.IsInitialValueValid(value)) //{ // ddl.ForeColor = System.Drawing.Color.Red; //} } else { txtBx.ID = string.Concat("txt", fieldName); txtBx.Text = value; divControl.Controls.Add(txtBx); txtBx.ToolTip = validator.ToolTip; txtBx.Style.Add("width", validator.ActualLength + "px"); if (validator.AllowEdit && (validator.LovType == EnumLovType.Lovp || curType == DataType.Date)) { txtBx.Style.Add("width", validator.ActualLength - 18 + "px"); } else { txtBx.Style.Add("width", validator.ActualLength + "px"); } if (validator.AllowEdit) { if (validator.LovType == EnumLovType.Lovp) { CreatePickButton(txtBx.ID, fieldName, ref divControl); } } else { txtBx.ReadOnly = true; } switch (curType) { case DataType.Integer: if (validator.MinValueInt >= 0 && validator.MaxValueInt > 0 && validator.ErrorLevel == 2) { RangeValidator rv = new RangeValidator(); rv.ID = string.Concat("rv", fieldName); rv.Type = ValidationDataType.Integer; rv.MinimumValue = validator.MinValueInt.ToString(); rv.MaximumValue = validator.MaxValueInt.ToString(); rv.ControlToValidate = txtBx.ID; rv.ErrorMessage = string.Format("Value should be between {0} and {1}", validator.MinValueInt, validator.MaxValueInt); rv.ValidationGroup = "peValidation"; divControl.Controls.Add(rv); } break; case DataType.Float: if (validator.ErrorLevel == 2) { if (validator.MinValueInt > 0 && validator.MaxValueInt > 0) { RangeValidator rv = new RangeValidator(); rv.ID = string.Concat("rv", fieldName); rv.Type = ValidationDataType.Double; rv.MinimumValue = validator.MinValueFloat.ToString(); rv.MaximumValue = validator.MaxValueFloat.ToString(); rv.ControlToValidate = txtBx.ID; rv.ErrorMessage = string.Format("Value should be between {0} and {1}", validator.MinValueFloat, validator.MaxValueFloat); rv.ValidationGroup = "peValidation"; divControl.Controls.Add(rv); } } break; case DataType.String: //if (validator.MaxStringLength > 0) //{ // txtBx.MaxLength = validator.MaxStringLength; //} if (validator.ErrorLevel == 2) { CustomValidator cv = new CustomValidator(); cv.ID = string.Concat("cv", fieldName); cv.ValidationGroup = "peValidation"; cv.ControlToValidate = txtBx.ID; cv.ValidateEmptyText = true; cv.ServerValidate += new ServerValidateEventHandler(CustomValidator_Handler); divControl.Controls.Add(cv); } break; case DataType.Date: if (value.Trim() == string.Empty) { txtBx.Text = value = DateTime.Today.ToString("dd-MM-yyy"); } if (validator.AllowEdit == true && validator.LovType != EnumLovType.Lovp) { ImageButton imgBtn = new ImageButton(); imgBtn.ID = string.Concat("imgBtn", fieldName); imgBtn.ImageUrl = "Images/calendericon.png"; imgBtn.Attributes.Add("onmouseover", "ShowCalander(this)"); CalendarExtender calander = new CalendarExtender(); calander.ID = string.Concat("cal", fieldName); calander.TargetControlID = txtBx.ID; calander.PopupButtonID = imgBtn.ID; calander.Format = "dd-MM-yyyy"; divControl.Controls.Add(imgBtn); divControl.Controls.Add(calander); } if (validator.ErrorLevel == 2) { CustomValidator cv = new CustomValidator(); cv.ID = string.Concat("cv", fieldName); cv.ValidationGroup = "peValidation"; cv.ControlToValidate = txtBx.ID; cv.ValidateEmptyText = true; cv.ServerValidate += new ServerValidateEventHandler(CustomValidator_Handler); divControl.Controls.Add(cv); } break; default: break; } if (validator.Mandatory == EnumMandatory.Yes && validator.ErrorLevel != 3) { RequiredFieldValidator rfv = new RequiredFieldValidator(); rfv.ID = string.Concat("rfv", fieldName); rfv.ControlToValidate = txtBx.ID; rfv.ErrorMessage = "Required"; rfv.ValidationGroup = "peValidation"; divControl.Controls.Add(rfv); } idType.ID = txtBx.ID; idType.Type = ControlType.TextBox; } // Check Initail value is correct or has an error. // If error than make it Red color. bool foundError = false; if (validator.Mandatory == EnumMandatory.Lov && userInputValue.Trim() != string.Empty) { //if (validator.LovType != EnumLovType.Lovc && (validator.LovType == EnumLovType.Lovc && validator.LOVValue.ToLower().StartsWith("select"))) if (validator.LovType != EnumLovType.Lovp) { // dropdown control if (!CheckInputConsistentWithList(ref ddl, userInputValue.Trim())) { foundError = true; } } else if (!CheckInputConsistentWithList(validator, userInputValue.Trim())) { foundError = true; } } if (foundError || !validator.IsInitialValueValid(value)) { txtBx.ForeColor = System.Drawing.Color.Red; } HtmlGenericControl table = new HtmlGenericControl("table"); HtmlGenericControl row = new HtmlGenericControl("tr"); HtmlGenericControl firstCol = new HtmlGenericControl("td"); HtmlGenericControl secondCol = new HtmlGenericControl("td"); // By default labels length = 128px; Considered that we have max 15 chars. // For more char than 15 we add CharLength(7px) for each char. int labelLength = 228; if (lebalMaxChar > 35 && inputBoxMaxLength < MaxDisplayLength) { int availableSpace = MaxDisplayLength - inputBoxMaxLength; int extraLength = (lebalMaxChar - 35) * CharLength; if (extraLength <= availableSpace) { labelLength = labelLength + extraLength; } else { labelLength = labelLength + availableSpace; } } if (maxLabelLength < labelLength) { maxLabelLength = labelLength; } table.Attributes.Add("width", "100%"); firstCol.Style.Add("width", labelLength + "px"); firstCol.Attributes.Add("valign", "top"); secondCol.Attributes.Add("valign", "top"); table.Controls.Add(row); row.Controls.Add(firstCol); row.Controls.Add(secondCol); firstCol.Controls.Add(divLabels); secondCol.Controls.Add(divControl); pnlControl.Controls.Add(table); return(idType); }