Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Обновление ComboBox


Автор: Vitkaz 9.4.2009, 07:20
   Привет всем! Есть ComboBox, который содержит столбец одной из таблиц, в процессе работы в эту таблицу добавляются новые записи. Как сделать так, чтобы ComboBox содержал в себе эти записи ? Помогите пожалуйста, искал похожие темы по форумам, но ничего полезного не нашел.

Автор: Idsa 9.4.2009, 08:58
Здесь 2 варианта - либо добавлять/удалять записи вручную, либо забаиндить (предпочтительно). Конкретная реализация зависит от того, что Вы используете: WinForms или WPF.

Автор: Vitkaz 9.4.2009, 12:35
  Я использую WinForms. Мне приходилось подобное проделывать в FoxPro. Там я  делал запрос select . . . from . . . where . . . into cursor и потом курсор подключал к ComboBox. А в Visual Studio на C# не знаю как.  

Автор: Vitkaz 11.4.2009, 13:37
Может кто-нибудь подскажет ?

Автор: Doss 11.4.2009, 18:59
Может я чего-то не понял, но вопрос в том, как вывести в списке комбо одно из полей тадлицы, ноходящейся в базе.
тогда так:

Код

 using (OleDbConnection conn = new OleDbConnection(connStringTable))
            {
                //-----------------
                try
                {
                    conn.Open();
                    //-------------------------------------------------
                    //----------------------------------------------------
                   OleDbDataAdapter  da = new OleDbDataAdapter(connString, conn);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Твоя таблица");
                    DataView dv = new DataView(ds.Tables["Твоя таблица"]);
                    foreach (DataRowView dr in dv)
                    {
                        ListItemDataView directionItem = new ListItemDataView(dr);
                        directionItem.Text = dr["Твое поле в таблице"].ToString();
                        ComboBoxName.Items.Add(directionItem.Text);

                    }
                    conn.Close();
                }

                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, ex.Source);
                    conn.Close();
                }
                //------------------
            }


Но класс нужно иметь, что бы проходить по каждой записи в таблице
к примету этокой:

Код

 class ListItemDataView
    {
        private DataRowView itemRow = null;

        /// <summary>
        /// Это свойство доступно только для чтения. Оно возвращает DataRow данного item в списке
        /// </summary>


        internal ListItemDataView()
        {
            this.text = "";
        }

        internal ListItemDataView(DataRowView row)
        {
            this.text = "";
            this.itemRow = row;
        }

        private string text;
        internal string Text
        {
            get { return text; }
            set { text = value; }
        }

        internal DataRowView ItemRow
        {
            get { return itemRow; }
        }
    }

Удалять или редактировать, либо добавлять стандатрным образом, но при этом обновить после операции твой комбо
так, 
Код

comboBox.Items.Clear();

Автор: Vitkaz 11.4.2009, 22:58
Я заполняю ComboBox, как показано в прилагаемом файле. ComboBox содержит список вкладов. Я добавляю новый вклад, но в ComboBox`е он появляется только после перезапуска формы. Мне нужно, чтобы новый добавленный вклад содержался в ComboBox`е, сразу после добавления. 

Автор: Экскалупатор 11.4.2009, 23:01
если я вас правильно понял то:
у контрола ComboBox есть свойства DataSours  и DisplayMember привязываете их к вашему дата сет, к нужной таблице, а потом к той колонке в датасет которая вам нужна. вроде так.

Код

DataWorking dataowrk = new DataWorking();//класс работы с данными
            DataSet ds = dataowrk.myDataSet_View(); //получаем датасет с интересующими данными
            comboBox1.DataSource = ds.Tables["table1"];
            comboBox1.DisplayMember = ds.Tables["table1"].Columns[0].ToString();



в итоге получаем комбобокс в котором отображены все данные из колонки с индексом "0", из таблицы "tables1"

Добавлено через 3 минуты
Цитата

Я заполняю ComboBox, как показано в прилагаемом файле. ComboBox содержит список вкладов. Я добавляю новый вклад, но в ComboBox`е он появляется только после перезапуска формы. Мне нужно, чтобы новый добавленный вклад содержался в ComboBox`е, сразу после добавления. 


обработайте событие формы(например Focus_Activated) что бы оно как бы перезаливало все нужные вам данные(перезапускало форму) и все данные будут обновлены

Автор: Vitkaz 12.4.2009, 12:41
 Благодарю за совет! Попробую разобраться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)