public override string ResolveBinding(ControlCollection coll, object dataContext)
        {
            string text = null;

            if (dataContext != null)
            {
                // it has dependent
                if (!string.IsNullOrEmpty(Dependent))
                {
                    var ctrls = coll.Where(p => p.Name == Dependent).Select(s => s);
                    if (ctrls.Count() > 0)
                    {
                        // must be combobox
                        var textBox = ctrls.First() as TextBox;
                        if (textBox != null)
                        {
                            DependentOf    = textBox.Name;
                            DependentCntrl = textBox;
                        }
                    }
                }

                string[] bindFields = Grid.ResolveBinding(BindingText);
                if (bindFields != null)
                {
                    // popupate data -- reflection
                    Type   objectType = dataContext.GetType();
                    object value      = dataContext;
                    for (int i = 0; i < bindFields.Length; i++)
                    {
                        PropertyInfo pInfo = objectType.GetProperty(bindFields[i]);
                        value = pInfo.GetValue(value, null);
                        if (value != null)
                        {
                            objectType = value.GetType();
                        }
                        text = value == null ? string.Empty : value as string;
                    }
                }
                else
                {
                    text = BindingText;
                }
                if (uiControl != null)
                {
                    ((System.Web.UI.WebControls.TextBox)uiControl).Text = text;
                }
                return(text);
            }

            else
            {
                return(string.Empty);
            }
        }
        private void createControls()
        {
            if (AddressDefinition != null)
            {
                HtmlGenericControl row  = null;
                ControlCollection  coll = AddressDefinition.AddressGrid.Controls;
                coll.SortControls();

                // Reading the resx to create the control
                var         reader      = new AddressResxReader();
                AddressResx addressResx = reader.GetAddressResx(Thread.CurrentThread.CurrentCulture.Name);
                var         rowNumber   = -1;
                foreach (int r in coll.Select(s => s.Row).Distinct())
                {
                    if (rowNumber != r)
                    {
                        var colNum = coll.Where(c => c.Row == r).Select(a => a.Column).Distinct().ToList();
                        _containerTable.Controls.Add(row = new HtmlGenericControl("div"));
                        rowNumber = r + 1;
                        var colNumRow = coll.Where(c => c.Row == rowNumber).Select(a => a.Column).Distinct().ToList();
                        if (colNumRow.Count > colNum.Count)
                        {
                            colNum = colNumRow;
                        }

                        var childNumber = 1;
                        foreach (int column in colNum)
                        {
                            if (colNum.Count() > 1)
                            {
                                var rowChild = new HtmlGenericControl("div");
                                row.Attributes.Add("class", "row-group " + "cols-" + colNum.Count().ToString());
                                rowChild.Attributes.Add("class", "inline");

                                if (childNumber == colNum.Count())
                                {
                                    rowChild.Attributes.Add("class", "inline last-child");
                                }
                                var lstControls = coll.Where(p => (p.Row == r || p.Row == rowNumber) && p.Column == column).Select(a => a).ToList();

                                rowChild.Attributes.Add("name", lstControls[0].Name.Contains("Spacer") ? "" : lstControls[0].Name.ToString());
                                foreach (Control c in lstControls)
                                {
                                    c.CreateUIControl(rowChild, DataContext, addressResx);
                                }
                                row.Controls.Add(rowChild);
                                childNumber++;
                            }
                            else
                            {
                                var lstControls = coll.Where(p => (p.Row == r || p.Row == rowNumber) && p.Column == column).Select(a => a).ToList();
                                row.Attributes.Add("name", lstControls[0].Name.Contains("Spacer") ? "" : lstControls[0].Name.ToString());
                                foreach (Control c in lstControls)
                                {
                                    c.CreateUIControl(row, DataContext, addressResx);
                                }
                            }
                        }
                    }
                    else
                    {
                        rowNumber = -1;
                    }
                }
                if (coll.Exists(p => p.Editable == true))
                {
                    _editMode = Mode.Edit;
                }
                AddressDefinition.AddressGrid.ResovleBinding(DataContext);
                controlCreated = true;
            }
        }
        public override string ResolveBinding(ControlCollection coll, object DataContext)
        {
            try
            {
                ListItem selectedItem;
                var      ddl = uiControl as DropDownList;
                ddl.DataBind();
                setSelected(DataContext, ddl);

                //Customozation to set the ddlCity drop down list
                GetCityValue(DataContext);

                // it has dependent
                if (!string.IsNullOrEmpty(Dependent))
                {
                    var ctrls = coll.Where(p => p.Name == Dependent).Select(s => s);
                    if (ctrls.Count() > 0)
                    {
                        // must be combobox
                        var cb = ctrls.First() as ComboBox;
                        if (cb != null)
                        {
                            DependentOf    = cb.Name;
                            DependentCntrl = cb;
                            if ((selectedItem = ddl.SelectedItem) == null)
                            {
                                string strValue = getStringValue(DataContext);
                                selectedItem = string.IsNullOrEmpty(strValue)
                                                   ? ddl.Items[0]
                                                   : ddl.Items.FindByText(strValue);
                            }
                            var depddl = DependentCntrl.uiControl as DropDownList;
                            (depddl.DataSource as XmlDataSource).XPath = string.Format(cb.XPath, selectedItem.Value);
                            depddl.DataBind();
                            if (!string.IsNullOrEmpty(GetCity.CityValue))
                            {
                                //depddl.SelectedItem.Text = GetCity.CityValue;
                                ListItem item = depddl.Items.FindByText(GetCity.CityValue);
                                if (item != null)
                                {
                                    item.Selected = true;
                                }
                                else
                                {
                                    item = depddl.Items.FindByValue(GetCity.CityValue);
                                    if (item != null)
                                    {
                                        item.Selected = true;
                                    }
                                }
                            }
                            else
                            {
                                setSelected(DataContext, ddl);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(ex.ToString());
            }
            return(null);
        }