예제 #1
0
    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);
        }
    }
예제 #2
0
    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;
    }
예제 #3
0
    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);
    }
예제 #4
0
    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);
    }