Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка данных в comboBox из таблицы БД, как загрузить данные в comboBox? 
:(
    Опции темы
emmanuil
Дата 10.4.2007, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: 1
Всего: 3



А функция к какому классу относится?
Если ты хочешь этот метод испотльзовать для многих ListBox"сов, то подавай ListBox через параметр. Если нет, то тогда параметр передовать не обязательно. Если у тебя ListBox1 и addcombobox находятся в одном классе, то просто пиши ListBox1.DataSource....
Если в разных классах, то передавай ListBox1 через свойство или сделай ListBox1 public, что не очень хорошо. А я просто дописал компонет, добавил свойства Connection, command..., метод для заполнения LoadData и все! И принеобходимости вызывал этот метод и все!

Код

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using DevExpress.XtraEditors;
using System.Windows.Forms;

namespace CommonEditors
{
    public class CheckListBoxControl : DevExpress.XtraEditors.CheckedListBoxControl
    {
        public CheckListBoxControl()
        {
            command = new SqlCommand();
            dataBaseAdapter = new SqlDataAdapter();
            dataSet = new DataSet();
        }

        private SqlConnection connection;
        public SqlConnection Connection
        {
            get { return connection; }
            set { connection = value; }
        }

        private SqlDataAdapter dataBaseAdapter;
        public SqlDataAdapter DataBaseAdapter
        {
            get { return dataBaseAdapter; }
            //set { dataAdapter = value; }
        }

        private DataSet dataSet;
        public DataSet DataSet
        {
            get { return dataSet; }
            //set { dataSet = value; }
        }

        private SqlCommand command;
        public SqlCommand Command
        {
            get { return command; }
            set { command = value; }
        }

        private void FillDataSet()
        {
            if (connection.State == ConnectionState.Closed)
                connection.Open();
            command.Connection = connection;
            dataBaseAdapter.SelectCommand = command;
            dataSet.Clear();
            dataBaseAdapter.Fill(dataSet);
        }

        public void LoadData(String displayDataFieldName, String memberDataFieldName)
        {
            try
            {
                FillDataSet();
                this.Items.Clear();
                this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldName].Caption;
                this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldName].Caption;
                this.DataSource = dataSet.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 +
                    e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void LoadData(int displayDataFieldIndex, int memberDataFieldIndex)
        {
            try
            {
                FillDataSet();
                this.Items.Clear();
                this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldIndex].Caption;
                this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldIndex].Caption;
                this.DataSource = dataSet.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 +
                    e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void LoadData(SqlConnection sqlConnection, String cmdText,
            String displayDataFieldName, String memberDataFieldName)
        {
            try
            {
                connection = sqlConnection;
                command.CommandText = cmdText;
                FillDataSet();
                this.Items.Clear();
                this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldName].Caption;
                this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldName].Caption;
                this.DataSource = dataSet.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 +
                    e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void LoadData(SqlConnection sqlConnection, String cmdText,
            int displayDataFieldIndex, int memberDataFieldIndex)
        {
            try
            {
                connection = sqlConnection;
                command.CommandText = cmdText;
                FillDataSet();
                this.Items.Clear();
                this.DisplayMember = dataSet.Tables[0].Columns[displayDataFieldIndex].Caption;
                this.ValueMember = dataSet.Tables[0].Columns[memberDataFieldIndex].Caption;
                this.DataSource = dataSet.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                MessageBox.Show("Произошла ошибка при заполнении списка!" + (Char)13 +
                    e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}


Правда тут DevExpress.XtraEditors.CheckedListBoxControl, а не стандартный CheckedListBox, но ты таким же способом можешь сделать свой. 
в FillDataSet() после dataSet.Clear() можно добавиь dataSet.Reset();

Может этот способ не идеален, просто тут на каждый компонент создается DataSet и остальное, но это все можно упростить и оптимизировать!
PM MAIL   Вверх
GMC
Дата 11.4.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



ну мне как раз и нужно использовать для многих ListBox"сов.
 А твой вариант тока как нить попробую!
smile


Это сообщение отредактировал(а) GMC - 11.4.2007, 10:14
PM MAIL   Вверх
vespa
Дата 18.4.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.3.2007

Репутация: нет
Всего: нет



У меня тоже проблема с combobox'ом. Задача в следующем. В программе есть датасет, содержащий одну таблицу (оба созданные с помощью визарда). Приложение должно отображать данные текущей строки. Т.е. есть много textbox'ов, в которых отображаются разные поля текущей записи. И должен быть один combobox, в который загружается содержимое ключевого поля таблицы. И когда выбираешь из выпадающего списка какое-нибудь значение, нужно чтобы отбразились остальные данные. Как это сделать автоматически, т.е. с помощью среды Visual Studio 2005? Какие нужно свойства задать combobox'у?

 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.