private void buttonOK_Click(object sender, EventArgs e)
        {
            StringMapList maps = new StringMapList();

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                string val = ValueConvertor.ToString(ds.Tables[0].Rows[i][1]);
                if (!string.IsNullOrEmpty(val))
                {
                    maps.AddFieldMap(ValueConvertor.ToString(ds.Tables[0].Rows[i][0]), val);
                }
            }
            DataEditorLookupDB edb = this.SelectedEditor as DataEditorLookupDB;

            if (edb != null)
            {
                edb.valuesMaps.AdditionalJoins = maps;
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                WebDataEditorLookupDB wd = this.SelectedEditor as WebDataEditorLookupDB;
                if (wd != null)
                {
                    wd.FieldsMap      = maps;
                    this.DialogResult = DialogResult.OK;
                }
            }
        }
        void _webQuery_SqlChanged(object sender, EventArgs e)
        {
            WebDataEditorLookupDB wd = WebLookup;

            wd.SqlString    = _webQuery.SqlQuery;
            wd.ConnectionID = _webQuery.ConnectionID;
            loadWebDataFields();
        }
        public static DlgSetEditorAttributes GetDatabaseLookupDataDialog(DataEditor current, DataEditor caller)
        {
            DataEditorLookupDB dbe0 = caller as DataEditorLookupDB;

            if (dbe0 != null)
            {
                DataEditorLookupDB dbe = current as DataEditorLookupDB;
                if (dbe == null)
                {
                    dbe = new DataEditorLookupDB();
                    dbe.valuesMaps.AdditionalJoins = dbe0.valuesMaps.AdditionalJoins;
                }
                else
                {
                    if (dbe0.valuesMaps.AdditionalJoins != null)
                    {
                        for (int i = 0; i < dbe0.valuesMaps.AdditionalJoins.Count; i++)
                        {
                            if (string.IsNullOrEmpty(dbe0.valuesMaps.AdditionalJoins[i].Source))
                            {
                                string val = dbe.valuesMaps.GetMappedField(dbe0.valuesMaps.AdditionalJoins[i].Target);
                                if (!string.IsNullOrEmpty(val))
                                {
                                    dbe0.valuesMaps.AdditionalJoins[i].Source = val;
                                }
                            }
                        }
                        dbe.valuesMaps.AdditionalJoins = dbe0.valuesMaps.AdditionalJoins;
                    }
                }
                return(new DlgDataEditDatabaseLookup(dbe));
            }
            else
            {
                WebDataEditorLookupDB wd0 = caller as WebDataEditorLookupDB;
                if (wd0 != null)
                {
                    WebDataEditorLookupDB wd = current as WebDataEditorLookupDB;
                    if (wd == null)
                    {
                        wd = (WebDataEditorLookupDB)wd0.Clone();
                    }
                    else
                    {
                        if (wd0.FieldsMap != null)
                        {
                            wd.FieldsMap = wd0.FieldsMap;
                        }
                    }
                    return(new DlgDataEditDatabaseLookup(wd));
                }
            }
            return(null);
        }
 public DlgDataEditDatabaseLookup(WebDataEditorLookupDB editor)
     : base(editor)
 {
     InitializeComponent();
     //
     if (editor == null)
     {
         editor = new WebDataEditorLookupDB();
         SetSelection(editor);
     }
     loadData();
 }
        public void loadData()
        {
            const string TABLENAME = "Links";
            //
            WebDataEditorLookupDB wd = WebLookup;

            //
            ds.Tables.Clear();
            ds.Tables.Add(TABLENAME);
            //
            ds.Tables[0].Columns.Add();
            ds.Tables[0].Columns.Add();
            //
            ds.Tables[0].Columns[0].Caption    = "Fields to be Updated";
            ds.Tables[0].Columns[0].ColumnName = "Destination";
            ds.Tables[0].Columns[0].DataType   = typeof(string);
            ds.Tables[0].Columns[0].MaxLength  = 120;
            ds.Tables[0].Columns[0].ReadOnly   = true;
            //
            ds.Tables[0].Columns[1].Caption    = "Source Fields";
            ds.Tables[0].Columns[1].ColumnName = "Source";
            ds.Tables[0].Columns[1].DataType   = typeof(string);
            ds.Tables[0].Columns[1].MaxLength  = 120;
            //
            //
            dataGridView1.DataSource              = ds;
            dataGridView1.DataMember              = TABLENAME;
            dataGridView1.ReadOnly                = true;
            dataGridView1.AllowUserToAddRows      = false;
            dataGridView1.AllowUserToDeleteRows   = false;
            dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            //
            cbx2         = new System.Windows.Forms.ComboBox();
            cbx2.Parent  = dataGridView1;
            cbx2.Visible = false;
            cbx2.Left    = 0;
            cbx2.SelectedIndexChanged += new EventHandler(cbx2_SelectedIndexChanged);
            //
            _webQuery = new EasyQuery();
            _webQuery.ConnectionID       = wd.ConnectionID;
            _webQuery.ForReadOnly        = true;
            _webQuery.SQL                = new SQLStatement(wd.SqlString);
            _webQuery.Description        = "Database lookup";
            _webQuery.SqlChanged        += new EventHandler(_webQuery_SqlChanged);
            propertyGrid1.SelectedObject = _webQuery;
            _webQuery.SetLoaded();
            //
            loadWebDataFields();
        }
        private void loadWebDataFields()
        {
            WebDataEditorLookupDB wd = WebLookup;

            cbx2.Items.Clear();

            int          i;
            FieldsParser fp = new FieldsParser();

            string[] fields = null;
            string   msg    = string.Empty;

            if (!string.IsNullOrEmpty(wd.SqlString))
            {
                if (fp.ParseQuery(wd.SqlString, _webQuery.NameDelimiterBegin, _webQuery.NameDelimiterEnd, ref msg))
                {
                    fields = new string[fp.Count];
                    for (i = 0; i < fields.Length; i++)
                    {
                        fields[i] = fp.Fields[i].FieldName;
                    }
                }
                else
                {
                    MessageBox.Show(string.Format(CultureInfo.InstalledUICulture, "{0}. Error parsing SQL Statement [{1}].", msg, wd.SqlString), "Parse SQL Statement");
                }
            }
            int n = wd.Hold.FieldCount;

            cbx2.Items.Add("");
            if (fields != null)
            {
                for (i = 0; i < fields.Length; i++)
                {
                    cbx2.Items.Add(fields[i]);
                }
            }
            if (n == 0)
            {
                MessageBox.Show("Linked data source not found (DestinationFieldCount is 0)");
                return;
            }
            else
            {
                ds.Tables[0].Rows.Clear();
                object[] vs;
                for (i = 0; i < n; i++)
                {
                    string nm = wd.Hold.GetFieldNameByIndex(i);
                    vs    = new object[2];
                    vs[0] = nm;                     //field to be updated
                    vs[1] = string.Empty;
                    if (wd.FieldsMap != null)
                    {
                        for (int j = 0; j < wd.FieldsMap.Count; j++)
                        {
                            if (string.Compare(wd.FieldsMap[j].Target, nm, StringComparison.OrdinalIgnoreCase) == 0)
                            {
                                bool ok = false;
                                if (fields != null)
                                {
                                    for (int k = 0; k < fields.Length; k++)
                                    {
                                        if (string.Compare(fields[k], wd.FieldsMap[j].Source, StringComparison.OrdinalIgnoreCase) == 0)
                                        {
                                            ok = true;
                                            break;
                                        }
                                    }
                                }
                                if (ok)
                                {
                                    vs[1] = wd.FieldsMap[j].Source;
                                }
                                break;
                            }
                        }
                    }
                    ds.Tables[0].Rows.Add(vs);
                }
            }
        }