コード例 #1
0
        // Updates list of available datasources (tables, views, stored procs)
        // for connection string specified by _cbDataProvider, _cbConnectionString
        // selects specified recordSource if possible
        private void ConnectionStringChanged(
            string recordSource)
        {
            // store current value of connection string to prevent update when
            // _cbConnectionString lost focus
            _oldConnectionString = _cbConnectionString.Text;

            BeginUpdate();
            Cursor = Cursors.WaitCursor;
            try
            {
                DsgnDataLinkBase dl = ((DataProviderDesc)_cbDataProvider.SelectedItem).Link;
                _tvDataSource.Nodes.Clear();
                if (!string.IsNullOrEmpty(_cbConnectionString.Text) && dl.Available)
                {
                    if (dl.UpdateControls(this, recordSource))
                    {
                        // current connection string should be stored in MRU list
                        int i = IndexOfConnectionDesc(dl, _cbConnectionString.Text);
                        if (i >= 0)
                        {
                            ConnectionDesc ci = (ConnectionDesc)_cbConnectionString.Items[i];
                            _cbConnectionString.Items.Remove(ci);
                            _cbConnectionString.Items.Insert(0, ci);
                            _cbConnectionString.SelectedIndex = 0;
                        }
                        else
                        {
                            if (_cbConnectionString.Items.Count > c_MaxMRUSize)
                            {
                                _cbConnectionString.Items.RemoveAt(_cbConnectionString.Items.Count - 1);
                            }
                            _cbConnectionString.Items.Add(new ConnectionDesc(dl, _cbConnectionString.Text));
                        }
                        // save MRU connections to application's settings
                        // SaveList uses ToString() method of objects in list so we can
                        // simple pass _cbConnectionString.Items items will be automatically converted to string like:
                        // OLEDB;Data source=...
                        List <string> l = new List <string>();
                        foreach (ConnectionDesc cd in _cbConnectionString.Items)
                        {
                            l.Add(cd.ToSettingsString());
                        }
                        AppSettings.SaveList("recentconnections", l, true, MessageForm.Warn);
                    }
                }
                UpdateButtons();
            }
            finally
            {
                Cursor = Cursors.Default;
                EndUpdate();
            }
        }
コード例 #2
0
 private int IndexOfConnectionDesc(
     DsgnDataLinkBase dataLink,
     string connectionString)
 {
     for (int i = 0; i < _cbConnectionString.Items.Count; i++)
     {
         ConnectionDesc cd = (ConnectionDesc)_cbConnectionString.Items[i];
         if (cd.Link == dataLink && cd.ConnectionString == connectionString)
         {
             return(i);
         }
     }
     return(-1);
 }