Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57

DataTable textbox combobox

18.04.2014, 21:50. Показов 7296. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть кобмобокс который привязан к dataset есть несколько текстбоксов, есть несколько кнопок очистить все поля, создать. Возникла проблема когда я хочу добавить новую строку в таблицу бд я нажимаю кнопку очистить она,она очищает все текстбоксы и задает combobox.selectindex=-1(раньше чем очищает textbox)(textbox и комбобокс привязаны к binding source одному и тому же только отображают разные данные в зависимости от выбранного элемента в комбобоксе.)Но когда я снова хочу выбрать элемент на котором я нажал "очистить" получаю в combobox пустую строку.После перезагрузки приложения все снова нормально.Так вот как мне реализовать логику очищение этих textbox
я делал просто textbox.text="" но как показала практика что это не очень хорошая идея.(Тоесть кнпка очистки как бы обновляет данные на время работы приложения этого мне не надо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2014, 21:50
Ответы с готовыми решениями:

Combobox vs. DataTable
Добрый день! Требуется совет профессионалов новичку :). Во время инициализации подключения к БД в DataSet подгружаются данные...

Выборка в DataTable с использованием comboBox
Здравствуйте! Помогите пожалуйста с функцией Select. Есть код: private void SortBox_SelectedIndexChanged(object sender, EventArgs e) ...

Привязка textBox's к объекту DataTable
Доброго времени! Такой вопрос: есть на форме несколько текстбоксов, нужно их заполнить данными из объекта DataTable. Данные были...

13
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 22:13
В чём вопрос? Как добавить строку в БД или как сохранить изменения? Текст программы тоже не помешал бы.
0
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 22:23  [ТС]
nmcf, как сделать что бы textbox стали пустыми,и ничего не изменяли с данными то есть вместо каких то значений не сохранялось значение пустой строки. Textbox databinding стоит свойство Text bindingsource
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 22:34
Отвяжи их от источников данных. Не будут ни на что влиять.
0
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 22:39  [ТС]
nmcf, Может подскажешь быстрый способ заполнения всех тексбоксов(10 штук данными из таблицы бд)
в зависимости от выбранного значения combobox. Понимаю что можно просто textbox.text= метод который получает индификатор с комбобокса и делает select. Но это долго... можно ли например сделать один запрос select * from ... и поместить например в массив а потом из этого массива уже загонять в тексбоксы.Или может есть вариант все таки проще
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 22:43
Ты велосипед изjбретаешь. Считай в DataTable нужную таблицу и потом просто привяжи к твоим текстбоксам её, указав какое именно поле отображать и они будут сами работать.

Добавлено через 1 минуту
А dataGridView почему не используешь? С ним намного проще.
0
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 22:56  [ТС]
nmcf, Датагридвью мне не нравится(да и пользователям тоже)вносить данные в него и редактировать...
Приведу пример у менять есть таблица хранит 2 столбца индификатор и text который занимает очень много места...
Тоесть в датагрид вывести текст больших размеров проблематично...Можно конечно выводить данные в датагрид а потом просто присваивать текстбоксам значение с грида ... но тут возникает проблема поиска думаю комбобокс лучший вариант(хотя можно все и сразу привязать комбо к гриду искать и выводить в текстбоксы) Но я думал есть вариант какой нить . Не мог бы ты привести пример как ты считываешь в DataColumn? Тоже обычным Sql запросом?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 23:07
DataColumn - это колонка dataGridView имеется в виду?
0
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:14  [ТС]
Не правильно написал в Datatable nmcf, покажи пример вот например имеется у меня в бд 3 столбца, как мне считать данные из них? я не могу сообразить...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 DataTable TeamsDt = new DataTable();
            DataColumn TeamNameColumn = new DataColumn("TeamName",typeof(string));
            DataColumn TownNameColum = new DataColumn("TownName", typeof(string));
            DataColumn DescriptionColumn = new DataColumn("Discription", typeof(string));
            TeamsDt.Columns.AddRange(new DataColumn[]{TeamNameColumn,TownNameColum,DescriptionColumn});
 using (SqlConnection con = new SqlConnection(CONNECTION_STRING))//Создания соединения
            {
                try
                {
                    SqlCommand com = new SqlCommand("SELECT * From Teams where TeamName='"+TeamName+"'", con);//Команда выборки
 
                    con.Open();//Открытие соединения
 
                    SqlDataReader dr = com.ExecuteReader();//Создаем объект dr для доступа к данным
 
                    foreach (DbDataRecord item in dr)
                    {
                        DataRow drow = new DataRow(dr[0],dr[1],dr[2]);// как правильно считывать тут?????????????
                    }
                }
                catch
                {
                    return null;
                }
            }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 23:18
Создаёшь DataSet, создаёшь DataAdapter с нужным SQL SELECT'ом. Считываешь адаптером в DataSet нужную таблицу. И всё. Пользуешься.

Добавлено через 29 секунд
Колонки создадутся сами.
1
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:21  [ТС]
Не мог бы ты скинуть пример или ссылку на что нить заранее благодарен тебе nmcf,
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 23:22
Вот пример, он немного о другом, но принцип ясен:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private OleDbConnection db_connection;
        private DataSet ds;
        private OleDbDataAdapter adapter_Books;
        private OleDbDataAdapter adapter_Series;
 
ds = new DataSet();
            db_connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=books.accdb");
            db_connection.Open();
 
            adapter_Books = new OleDbDataAdapter(new OleDbCommand("SELECT * FROM Books ORDER BY bNumber", db_connection));
            var cb_adapter_Books = new OleDbCommandBuilder(adapter_Books);
 
            adapter_Series = new OleDbDataAdapter(new OleDbCommand("SELECT * FROM Series ORDER BY sName", db_connection));
            var cb_Series = new OleDbCommandBuilder(adapter_Series);
 
            adapter_Books.Fill(ds, "Books"); // прочитать books
            adapter_Series.Fill(ds, "Series"); // прочитать series
 
            db_connection.Close();
 
            ds.Tables["Series"].Columns["sName"].Unique = true;
 
            // Установка связи таблиц Books.bSeries = Series.sNumber
            ds.Relations.Add(new DataRelation("rlSeriesBooks", ds.Tables["Series"].Columns["sNumber"], ds.Tables["Books"].Columns["bSeries"]));
 
            dataGridView1.DataSource = ds.Tables["Books"]; // Books - в DataGrid
 
            dataGridView1.Columns["bSeries"].Visible = false; // скрыть колонку с идентификатором
 
            var cbx_Series = new DataGridViewComboBoxColumn(); // добавить новую колонку
            cbx_Series.Name = "Серия";
            cbx_Series.DataSource = ds.Tables["Series"];
            cbx_Series.DisplayMember = "sName"; // Отображать из Series
            cbx_Series.ValueMember = "sNumber";
            cbx_Series.DataPropertyName = "bSeries"; // Для связи с Books
            cbx_Series.MaxDropDownItems = 10;
            cbx_Series.FlatStyle = FlatStyle.Flat;
            dataGridView1.Columns.Insert(5, cbx_Series);
            dataGridView1.Columns[5].Width = 200;
Добавлено через 54 секунды
Читаются 2 таблицы из базы Access - Books и Series.
3
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:39  [ТС]
nmcf, как вставить значение из dataset в текстбокс?
C#
1
2
3
4
5
6
7
8
9
10
static public DataSet Experemetn(string TeamName)
        {
            DataSet TeamsDataSet = new DataSet();
            SqlDataAdapter teamDataAdapter = new SqlDataAdapter("Select * from Teams where TeamName='" + TeamName + "'", CONNECTION_STRING);
            teamDataAdapter.Fill(TeamsDataSet);
            return TeamsDataSet;
        } 
//создал метод возращает dataset что теперь?
DataSet tempDataset = DAL.Experemetn(cbxSelectTeam.SelectedValue.ToString());//вызываю его а что прописать не знаю
                txtTeamName.Text=
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2014, 08:28
Нужно привязать TextBox к желаемому полю.
C#
1
txtTeamName.DataBindings.Add(new Binding("Text", TeamDataSet, "Teams.TeamName"));
Здесь "Text" - это реквизит текстбокса, который привязывается к полю TeamName таблицы Teams в БД.

Ты не совсем правильно делаешь. DataSet у тебя должен быть один на всю БД, в него загружаешь адаптерами все необходимые таблицы. Переменная для DataSet должна быть общедоступна, объяви её внутри класса твоей формы, а не внутри функции Experimetn.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2014, 08:28
Помогаю со студенческими работами здесь

Привязка textBox к объекту DataTable к конкретной строке
Доброго времени суток! Делаю привязку textBox'а (seme1) к полю (rati_sem1) DataTable (dtRatinSemYear): seme1.DataBindings.Clear(); ...

Запрос к связанным таблицам (Access), через Datatable с выводом в два Combobox
Всем доброго. Помогите кто с проблемкой, есть две связанные таблицы Statiy ID-ключ Name - string Statiy ID-integer Name -...

Поиск по БД из textBox, combobox
Подскажите пж код или ссылки для поиска данных в БД. Использую данный код CSHARP] private void button1_Click(object sender, EventArgs e)...

Связь comboBox и textBox
Есть таблица Printer, имеет структуру: Print_ID (PK) Print_Name Dept Данные из Dept выводятся в комбобокс. Как сделать, чтобы при...

Поиск по БД из textBox, combobox
Объясните пожалуйста как показать данные столбца из таблицы через Combobox, смотрела разные сайты, там показано как сделать через свойства...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru