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

Редактирование DataGridView через TextBox

07.04.2016, 00:37. Просмотров 900. Ответов 2
Метки нет (Все метки)

Очень нуждаюсь в помощи. Из-за моих скудных знаний встала вся работа.

В общем, есть 2 формы. На форме 1 DataGridView. По двойному нажатию по строке открывается форма 2. В textBox'ы заносятся данные строки формы 1. Все работает. НО! Редактирую textbox'ы. надо организовать сохранение измененных значений обратно в datagridview. Вот тут косяк. Ничего у меня не получается.
Вот, собственно, коды (пишу, на мой взгляд, самое необходимое - кусками. если что-то понадобится, говорите):

Форма 1
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 public partial class RabSotrudnik : Form
    {
        DataGridViewPrinter MyDataGridViewPrinter;
        LichnayaKarta lc = new LichnayaKarta();
 
        DataSet ds;
        SqlDataAdapter adapter=null;
       
        string connString = @"Data Source=KOMP;Initial Catalog=spravochniki;Integrated Security=True";
        string sql = "SELECT * FROM Personal";
 
 //заполнение таблицы
 
public void RabSotrudnik_Load(object sender, EventArgs e)
        {
          
            this.personalTableAdapter1.Fill(this.spravochnikiDataSet13.Personal);
           
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.AllowUserToAddRows = false;
 
            using (SqlConnection connection = new SqlConnection(connString))
            {
                connection.Open();
                adapter = new SqlDataAdapter(sql, connection);
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                adapter.UpdateCommand = builder.GetUpdateCommand();
                adapter.InsertCommand = builder.GetInsertCommand();
                adapter.DeleteCommand = builder.GetDeleteCommand();
                ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                /*ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                // делаем недоступным столбец id для изменения
                dataGridView1.Columns[0].ReadOnly = true;*/
            }
           
        }
 
//здесь происходит заполнение Второй формы
 
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            DataGridView rgv = sender as DataGridView;
            rgv.CurrentCell=rgv[e.ColumnIndex,e.RowIndex];
            rgv.BeginEdit(true);
            lc.textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            lc.textBox2.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
            lc.textBox3.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            lc.textBox4.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            lc.comboBox5.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
 
            
                lc.ShowDialog();
            
        }
Форма 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
//Тут предполагалось сохранение изменений
private void toolStripButton6_Click(object sender, EventArgs e)
        {
            RabSotrudnik rs = new RabSotrudnik();
 
 
            if (MessageBox.Show("Вы хотите сохранить изменения?", "InvoiceManager - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
 
                if (rs.dataGridView1.SelectedRows.Count > 0)
                {
                    int n = rs.dataGridView1.SelectedRows[0].Index;
                    rs.dataGridView1.Rows[n].Cells[0].Value = int.Parse(textBox4.Text);
                    rs.dataGridView1.Rows[n].Cells[1].Value = textBox1.Text;
                    rs.dataGridView1.Rows[n].Cells[2].Value = textBox2.Text;
                    rs.dataGridView1.Rows[n].Cells[3].Value = textBox3.Text;
                    rs.dataGridView1.Rows[n].Cells[4].Value = comboBox5.Text;
                    personalTableAdapter1.Update(spravochnikiDataSet13);
                    personalTableAdapter1.Fill(spravochnikiDataSet13.Personal);
 
                }
И последний вопрос: почему данные из datagridview не переносятся в comboBox?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2016, 00:37
Ответы с готовыми решениями:

Редактирование DataGridview через textbox
Есть таблица в которую через текстбоксы нужно добавить данные. Как сделать, чтобы при добавление...

Редактирование ячейки datagridview по значению textBox (Access)
Как сделать, чтобы можно было отредактировать ячейку бд(аксес) отображаемой в datagridview? Есть...

Редактирование .mdb через datagridview
Всем привет! Возникла проблема при изменении полей в datagridview и последующего обновления базы...

Редактирование таблиц БД через DataGridView
Всем привет, как сохранять изменения, сделанные в DataGridView, в таблицу БД? В частности...

Редактирование DataGridView через форму
Здравствуйте, я столкнулся с такой проблемой ,у меня имеется 2 таблицы Модули и Дисциплины ,...

2
Даценд
Модератор
Эксперт .NET
4330 / 4047 / 2676
Регистрация: 20.04.2015
Сообщений: 7,342
07.04.2016, 01:11 2
alena897,
в коде toolStripButton6_Click есть строка
C#
6
RabSotrudnik rs = new RabSotrudnik();
В этой строке создается новый экземпляр формы класса RabSotrudnik, который к той форме, в которой находится редактируемый dataGridView1 отношения не имеет.
О том как передавать данные между классами можно почитать здесь.
Чтобы меньше исправлять код, можно воспользоваться п. 2.4
0
alena897
0 / 0 / 1
Регистрация: 17.12.2014
Сообщений: 34
07.04.2016, 02:26  [ТС] 3
Товарищи, вопрос решен. Если кому-то вдруг пригодится.
форма 1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//двойное нажатие по строке datagridview
 private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            lc.Owner = this;
            DataGridView rgv = sender as DataGridView;
            rgv.CurrentCell=rgv[e.ColumnIndex,e.RowIndex];
            rgv.BeginEdit(true);
            lc.textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            lc.textBox2.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
            lc.textBox3.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            lc.textBox4.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            lc.comboBox5.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
 
            
                lc.ShowDialog();
            
        }
форма 2:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Редактирование строки datagridview и последующее сохранение в бд
 private void toolStripButton6_Click(object sender, EventArgs e)
        {
 
            RabSotrudnik rs = this.Owner as RabSotrudnik;
            if (rs != null)
            {
                if (MessageBox.Show("Вы хотите сохранить изменения?", "InvoiceManager - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
 
                    if (rs.dataGridView1.SelectedRows.Count > 0)
                    {
                        int n = rs.dataGridView1.SelectedRows[0].Index;
                        rs.dataGridView1.Rows[n].Cells[0].Value = int.Parse(textBox4.Text);
                        rs.dataGridView1.Rows[n].Cells[1].Value = textBox1.Text;
                        rs.dataGridView1.Rows[n].Cells[2].Value = textBox2.Text;
                        rs.dataGridView1.Rows[n].Cells[3].Value = textBox3.Text;
                        rs.dataGridView1.Rows[n].Cells[4].Value = comboBox5.Text;
                        personalTableAdapter1.Update(spravochnikiDataSet13);
                        personalTableAdapter1.Fill(spravochnikiDataSet13.Personal);
 
                    }
Добавлено через 3 минуты
Правда в БД не сохраняет(((

Добавлено через 48 минут
Вопрос актуален.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2016, 02:26

Редактирование БД MySql через DataGridView
На форме есть ДатаГрид и кнопка. Посредством следующего запроса я обновляю данные в ДатаГрид и в...

Редактирование записей БД Access через DataGridview
Как можно поместить таблицу Datagridview в Access, а затем если пользователь захочет открыть ее...

Удаление и редактирование строк в БД через DataGridView
пересмотрел уже кучу всего , но так и не нашёл нормального способа удалить(обновить) строку в...


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

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

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