Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
Diablik
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
1

DataTable textbox combobox

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

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

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

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

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

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

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

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

Добавлено через 1 минуту
А dataGridView почему не используешь? С ним намного проще.
0
Diablik
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 22:56  [ТС] 7
nmcf, Датагридвью мне не нравится(да и пользователям тоже)вносить данные в него и редактировать...
Приведу пример у менять есть таблица хранит 2 столбца индификатор и text который занимает очень много места...
Тоесть в датагрид вывести текст больших размеров проблематично...Можно конечно выводить данные в датагрид а потом просто присваивать текстбоксам значение с грида ... но тут возникает проблема поиска думаю комбобокс лучший вариант(хотя можно все и сразу привязать комбо к гриду искать и выводить в текстбоксы) Но я думал есть вариант какой нить . Не мог бы ты привести пример как ты считываешь в DataColumn? Тоже обычным Sql запросом?
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
18.04.2014, 23:07 8
DataColumn - это колонка dataGridView имеется в виду?
0
Diablik
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:14  [ТС] 9
Не правильно написал в 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
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
18.04.2014, 23:18 10
Создаёшь DataSet, создаёшь DataAdapter с нужным SQL SELECT'ом. Считываешь адаптером в DataSet нужную таблицу. И всё. Пользуешься.

Добавлено через 29 секунд
Колонки создадутся сами.
1
Diablik
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:21  [ТС] 11
Не мог бы ты скинуть пример или ссылку на что нить заранее благодарен тебе nmcf,
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
18.04.2014, 23:22 12
Вот пример, он немного о другом, но принцип ясен:
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
Diablik
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 57
18.04.2014, 23:39  [ТС] 13
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
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
19.04.2014, 08:28 14
Нужно привязать TextBox к желаемому полю.
C#
1
txtTeamName.DataBindings.Add(new Binding("Text", TeamDataSet, "Teams.TeamName"));
Здесь "Text" - это реквизит текстбокса, который привязывается к полю TeamName таблицы Teams в БД.

Ты не совсем правильно делаешь. DataSet у тебя должен быть один на всю БД, в него загружаешь адаптерами все необходимые таблицы. Переменная для DataSet должна быть общедоступна, объяви её внутри класса твоей формы, а не внутри функции Experimetn.
2
19.04.2014, 08:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 08:28

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.