powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView удаление строки.
8 сообщений из 8, страница 1 из 1
DataGridView удаление строки.
    #38936795
ОлегБаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Неделю бодаюсь с проблемой.

На форме разместил DataGridView и привязал к ней базу .sdf Также на форме есть BindingNavigator, table AdapterManager,BindingSourse стандартные элементы для таблицы. Проблема в том когда жмакаю на кнопку удалить запись удаляется, но при Refresh запись снова есть. При этом ексепшн выдает, что для Update нужна действительно Delete команда.

часть кода для удаления:

private void button_Delete_Click(object sender, EventArgs e)
{

try
{
DialogResult dialog = new DialogResult();
dialog = MessageBox.Show("Вы пытаетесь удалить запись","Message",MessageBoxButtons.OK,MessageBoxIcon.Question);
if (dialog == DialogResult.OK)
{
this.phoneBaseBindingSource.RemoveCurrent();
this. phoneBaseDataGridView.RowsRemoved+=new DataGridViewRowsRemovedEventHandler(phoneBaseDataGridView_RowsRemoved);

}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Подскажите что не так. В гриде на чекбоксе стоит галочка разрешение удаления.

Спасибо.
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38936877
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38937607
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ОлегБаш,

А вы подключили к DataTable событие RowDeleted?
А в dataTableAdapter команда DeleteCommand прописана?
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38938995
ОлегБаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
Спасибо за ответ.
Строки удаляются но после очередного запуска тестирования они опять есть. То что вы предлагаете уже пробовал.
Во код. Но при рефреше данные после удаления не сохраняются. Так как в проекте локальная база то я так понимаю нет необходимости подключать SqlCeCommand,DataTable и так далее так как это уже было создано в BindingNavigator. С удалением строк вполне справляется RemoveCurrent.
Если есть идеи буду очень благодарен.

Для элемента Update требуется действительный DeleteCommand при передаче коллекции DataRow с удаленными строками. Это строка ексепшина когда пытаюсь рефрешить.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace Телефонный_справочник
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}
DataSet ds = new DataSet("PhoneBase.sdf");
private void phoneBaseBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.phoneBaseBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.phoneBaseDataSet1);

}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "phoneBaseDataSet1.PhoneBase". При необходимости она может быть перемещена или удалена.
this.phoneBaseTableAdapter.Fill(this.phoneBaseDataSet1.PhoneBase);
timer1.Start();

dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd";
dateTimePicker1.Format = DateTimePickerFormat.Custom;

for (int i = 0; i <= phoneBaseDataGridView.RowCount; i++)
{
phoneBaseDataGridView.Rows[i].Cells[12].Value = dateTimePicker1.Value;
}
}
int count = 0;
private void timer1_Tick(object sender, EventArgs e)
{
count = phoneBaseBindingSource.Count;
label1.Text = "Количество записей в базе: " + count.ToString();
if (count < 2)
groupBox3.Visible = false;
else
groupBox3.Visible = true;
}

private void button_Add_Click(object sender, EventArgs e)
{
phoneBaseBindingSource.AddNew();
}

private void button_Save_Click(object sender, EventArgs e)
{
this.Validate();
this.phoneBaseBindingSource.EndEdit();
}

private void button_Delete_Click(object sender, EventArgs e)
{

try
{
DialogResult dialog = new DialogResult();
dialog = MessageBox.Show("Вы пытаетесь удалить запись", "Message", MessageBoxButtons.OK, MessageBoxIcon.Question);
if (dialog == DialogResult.OK)
{
this.phoneBaseBindingSource.RemoveCurrent();
}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void button_Refresh_Click(object sender, EventArgs e)
{
tableAdapterManager.UpdateAll(this.phoneBaseDataGridView.);
}
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38939034
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОлегБаш, Вы не читаете то что вам пишут... или не понимаете вопросов...
Совет - вставьте строку сообщения об ошибке в поиск google ( А в dataTableAdapter команда DeleteCommand прописана? )
Как заработает, не забудьте посмотреть свойства вашего sdf'а... если он добавлен в проект... (Copy to output directory)
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38939535
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: 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.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
[quote ОлегБаш]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace Телефонный_справочник
{
    public partial class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
       
        }
        DataSet ds = new DataSet("PhoneBase.sdf");
        private void phoneBaseBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.phoneBaseDataSet1); 
phoneBaseDataSet1.PhoneBaseRowDeleted += PhoneBase_RowDeletedUpdated;phoneBaseDataSet1.PhoneBaseRowUpdated += PhoneBase_RowDeletedUpdated;


        }
void PhoneBase_RowDeletedUpdated (object sender, DataRowChangeEventArg e){this.phoneBaseTableAdapter.Update(this.phoneBaseDataSet1.PhoneBase);}

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "phoneBaseDataSet1.PhoneBase". При необходимости она может быть перемещена или удалена.
            this.phoneBaseTableAdapter.Fill(this.phoneBaseDataSet1.PhoneBase);
            timer1.Start();

            dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd";
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
                
            for (int i = 0; i <= phoneBaseDataGridView.RowCount; i++)
            {
                phoneBaseDataGridView.Rows[i].Cells[12].Value = dateTimePicker1.Value;
            }
        }
        int count = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            count = phoneBaseBindingSource.Count;
            label1.Text = "Количество записей в базе: " + count.ToString();
            if (count < 2)
                groupBox3.Visible = false;
            else
                groupBox3.Visible = true;
        }

        private void button_Add_Click(object sender, EventArgs e)
        {
            phoneBaseBindingSource.AddNew();
        }

        private void button_Save_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
        }

        private void button_Delete_Click(object sender, EventArgs e)
        {

            try
            {
                DialogResult dialog = new DialogResult();
                dialog = MessageBox.Show("Вы пытаетесь удалить запись", "Message", MessageBoxButtons.OK, MessageBoxIcon.Question);
                if (dialog == DialogResult.OK)
                {
                    this.phoneBaseBindingSource.RemoveCurrent();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button_Refresh_Click(object sender, EventArgs e)
        {
            tableAdapterManager.UpdateAll(this.phoneBaseDataGridView.); 
        }[/quote]
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38939598
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не туда воткнулю Хотя это проблемы не решит, просто так должно быть

Cat2
Код: 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.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace Телефонный_справочник
{
    public partial class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
       
        }
        DataSet ds = new DataSet("PhoneBase.sdf");
        private void phoneBaseBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.phoneBaseDataSet1); 



        }
void PhoneBase_RowDeletedUpdated (object sender, DataRowChangeEventArg e){this.phoneBaseTableAdapter.Update(this.phoneBaseDataSet1.PhoneBase);}

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "phoneBaseDataSet1.PhoneBase". При необходимости она может быть перемещена или удалена.
            this.phoneBaseTableAdapter.Fill(this.phoneBaseDataSet1.PhoneBase);
            timer1.Start();

            dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd";
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
                
            for (int i = 0; i <= phoneBaseDataGridView.RowCount; i++)
            {
                phoneBaseDataGridView.Rows[i].Cells[12].Value = dateTimePicker1.Value;
            }

phoneBaseDataSet1.PhoneBaseRowDeleted += PhoneBase_RowDeletedUpdated;phoneBaseDataSet1.PhoneBaseRowUpdated += PhoneBase_RowDeletedUpdated;
        }
        int count = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            count = phoneBaseBindingSource.Count;
            label1.Text = "Количество записей в базе: " + count.ToString();
            if (count < 2)
                groupBox3.Visible = false;
            else
                groupBox3.Visible = true;
        }

        private void button_Add_Click(object sender, EventArgs e)
        {
            phoneBaseBindingSource.AddNew();
        }

        private void button_Save_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
        }

        private void button_Delete_Click(object sender, EventArgs e)
        {

            try
            {
                DialogResult dialog = new DialogResult();
                dialog = MessageBox.Show("Вы пытаетесь удалить запись", "Message", MessageBoxButtons.OK, MessageBoxIcon.Question);
                if (dialog == DialogResult.OK)
                {
                    this.phoneBaseBindingSource.RemoveCurrent();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button_Refresh_Click(object sender, EventArgs e)
        {
            tableAdapterManager.UpdateAll(this.phoneBaseDataGridView.); 
        }
...
Рейтинг: 0 / 0
DataGridView удаление строки.
    #38940684
ОлегБаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за советы. По новой создал все приложение и заработало. По видимому что то криво стояло или прописалось в дизайнере.
Cat2Не туда воткнулю Хотя это проблемы не решит, просто так должно быть

Cat2
Код: 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.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace Телефонный_справочник
{
    public partial class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
       
        }
        DataSet ds = new DataSet("PhoneBase.sdf");
        private void phoneBaseBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.phoneBaseDataSet1); 



        }
void PhoneBase_RowDeletedUpdated (object sender, DataRowChangeEventArg e){this.phoneBaseTableAdapter.Update(this.phoneBaseDataSet1.PhoneBase);}

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "phoneBaseDataSet1.PhoneBase". При необходимости она может быть перемещена или удалена.
            this.phoneBaseTableAdapter.Fill(this.phoneBaseDataSet1.PhoneBase);
            timer1.Start();

            dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd";
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
                
            for (int i = 0; i <= phoneBaseDataGridView.RowCount; i++)
            {
                phoneBaseDataGridView.Rows[i].Cells[12].Value = dateTimePicker1.Value;
            }

phoneBaseDataSet1.PhoneBaseRowDeleted += PhoneBase_RowDeletedUpdated;phoneBaseDataSet1.PhoneBaseRowUpdated += PhoneBase_RowDeletedUpdated;
        }
        int count = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            count = phoneBaseBindingSource.Count;
            label1.Text = "Количество записей в базе: " + count.ToString();
            if (count < 2)
                groupBox3.Visible = false;
            else
                groupBox3.Visible = true;
        }

        private void button_Add_Click(object sender, EventArgs e)
        {
            phoneBaseBindingSource.AddNew();
        }

        private void button_Save_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.phoneBaseBindingSource.EndEdit();
        }

        private void button_Delete_Click(object sender, EventArgs e)
        {

            try
            {
                DialogResult dialog = new DialogResult();
                dialog = MessageBox.Show("Вы пытаетесь удалить запись", "Message", MessageBoxButtons.OK, MessageBoxIcon.Question);
                if (dialog == DialogResult.OK)
                {
                    this.phoneBaseBindingSource.RemoveCurrent();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button_Refresh_Click(object sender, EventArgs e)
        {
            tableAdapterManager.UpdateAll(this.phoneBaseDataGridView.); 
        }
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView удаление строки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]