Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150

Условие в DataGridView появление новой строки

08.02.2017, 14:34. Показов 3085. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет делаю обновление грида каждую секунду если в базу заносится новая строка она появляется. Как выполнить условие если появилась новая строка ?

делал так придумал что смог в обход но этот способ падаем если в базе удалить хотябы одно поел приходится перезавпускать программу


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 int checkin = 0;
        int checkin2 = 0;
 
 private void timer1_Tick(object sender, EventArgs e)
        {
            retrive(); //вывод из бд в грид
 
 
            check1.Text = metroGrid1.RowCount.ToString();
 
            checkin = Convert.ToInt32(check1.Text);
            checkin2 = Convert.ToInt32(check2.Text);
 
            if (checkin > checkin2)
            {
 
                check2.Text = "" + checkin;
 
                Form2 form = new Form2();
                form.Show();//в обычном режиме
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2017, 14:34
Ответы с готовыми решениями:

При последней строки DBGrid появление новой
Всем привет. Все как обычно я подобрал DBNavigator под DBGrid и при последней строке надо чтоб нажимался "+" плюсик от компонента...

Появление ошибки IndexOutOfRangeException при выборе строки в DataGridView
Имеем пустой DataGridView. Считываем с бд в лист данные. Привязываем к DGW этот лист через DataSource. Дальше, при добавлении в лист...

Добавление новой строки в DatagridView
День добрый. Была уже такая тема от Zaharius, однако повис в воздухе такой вопрос: И вопрос этот очень насущный ибо я мониторю СОМ...

13
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
08.02.2017, 17:16
а попытаться перевызивать метод просто каждую секунду который отоброжаэ данные из бд в грид не вариант?
0
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
08.02.2017, 21:05  [ТС]
так я так и делаю суть проблемы в том что мне нужно открывать окно если после обновления грида там появилась новая строка как оповещение

Добавлено через 1 минуту
Тоесть появляется новая строка в базе автоматически это обновляется в гриде
Как только появилаьс новая строка уже в гриде должно появится окно бла.бла.бла
Какое услвоие прописать чтобы вызвать новое окно если именно в гриде появилась новая строка после обновления
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
08.02.2017, 21:35
для начала создаем 2 интовые переменные - для записи туда количества строк и дальнейшей проверки.
"если в течении 2-х секунд количество столбцов не изменялось, то количество записать в в int1, во вторую(int2 допустим) же по дефолту писать количество столбцов каждую секунду"
ну и главная проверочка проверочка
SQL
1
2
3
IF(int1 < INT 2)
Form2 form = NEW Form2();
form.Show();//в обычном режиме
0
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
08.02.2017, 23:12  [ТС]
Вот именно это у меня и сейчас стоит но проблема если удалить хотябы одну строчку с базы то и в форме код обновит естественно минус строку то если ввелся подсчет он уже будет неверен и в след раз оповещения не будет вот в чем проблема((

А варианта с гридом нет если появляется новая строка +1 то условие*?
0
7 / 6 / 4
Регистрация: 06.02.2017
Сообщений: 73
09.02.2017, 00:26
туго немножко доганяю) а продолжать этот же подсчет с точно таки же условием не вариант? то есть, если после удаление, 2 секунды бд не трогалась записать в int1 и т.д...
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
09.02.2017, 08:21
проверяйте максимальный ИД записи, а не количество строк.
0
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
09.02.2017, 17:29  [ТС]
О интересно а подскажите как правильно вывод сделать последнего айди в базе скажем в скрытый тексбокс
как вывести кликом я знаю в гриде событиые сел клик

C#
1
 m2id.Text = metroGrid1.SelectedRows[0].Cells[0].Value.ToString();
А как вывести именно айди последнее в базе без нажатия ?
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
10.02.2017, 04:18
Лучший ответ Сообщение было отмечено dripservice как решение

Решение

Цитата Сообщение от dripservice Посмотреть сообщение
сделать последнего айди в базе скажем в скрытый тексбокс
А зачем скрытый текстбокс, используйте глобальную переменную.

В обработчике события OnLoad первой формы задаете значение для этой переменнной.
Цитата Сообщение от dripservice Посмотреть сообщение
А как вывести именно айди последнее в базе без нажатия ?
Запросом к базе
SQL
1
SELECT MAX(id) FROM table1
или если есть LinqToSql
C#
1
2
3
basaDataContext rt = new basaDataContext();
int max_id = (from i in rt.table1
                   select i.id).Max();
И по таймеру :
проверяйте значение максимального ид
если не совпадает выводите сообщения всех ид которые больше последнего значения ид
после вывода снова присваиваете максимальный ид и все
0
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
10.02.2017, 15:55  [ТС]
Спасибо идею понял !

Добавлено через 10 часов 22 минуты
Попробовал так ошибка Невозможно найти столбец 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
try
            {
                metroGrid1.Rows.Clear();
                string sql = "SELECT MAX(id) FROM washing WHERE date = @SelectedDate";
                cmd = new MySqlCommand(sql, con);
 
                cmd.Parameters.AddWithValue("@SelectedDate", metroDateTime1.Value.Date);
 
 
                con.Open();
                metroGrid1.Rows.Clear();
                adapter = new MySqlDataAdapter(cmd);
                adapter.Fill(dt);
                foreach (DataRow row in dt.Rows)
                {
                    populate(row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString(), row[5].ToString(), row[6].ToString());
 
                }
 
 
                con.Close();
 
                dt.Rows.Clear();
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
11.02.2017, 19:00
после выполнения команды у вас должен быть всего 1 столбец с одним значением
То есть это
Цитата Сообщение от dripservice Посмотреть сообщение
foreach (DataRow row in dt.Rows)
* * * * * * * * {
* * * * * * * * * * populate(row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString(), row[5].ToString(), row[6].ToString());
}
можно заменить на
C#
1
max_id = dt.Rows[0][0];
Добавлено через 30 минут
а ещё лучше
C#
1
max_id = (int)cmd.ExecuteScalar();
0
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
12.02.2017, 15:09  [ТС]
Ничего не происходит после клика сделал так вывода нету в грид может поэтому не работает или я что то не так понял((

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
int max_id;
            try
            {
                metroGrid1.Rows.Clear();
                string sql = "SELECT MAX(id) FROM washing";
                cmd = new MySqlCommand(sql, con);
 
              
 
 
                con.Open();
                metroGrid1.Rows.Clear();
                adapter = new MySqlDataAdapter(cmd);
                adapter.Fill(dt);
 
 
 
 
                max_id = (int)cmd.ExecuteScalar();
 
 
 
                con.Close();
 
                dt.Rows.Clear();
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
13.02.2017, 02:45
Лучший ответ Сообщение было отмечено dripservice как решение

Решение

Объявите как глобальную переменную
C#
1
2
3
4
5
6
7
8
 public partial class Debugger : Form
    {
        public int max_id=0;
 
        public Debugger()
        {
            InitializeComponent();
        }
Функция для поиска максималного ид
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
private int CheckMaxId()
{
int tek_max_id;
            try
            {
                metroGrid1.Rows.Clear();
                string sql = "SELECT MAX(id) FROM washing";
                cmd = new MySqlCommand(sql, con);
                con.Open();
                //metroGrid1.Rows.Clear();
                //adapter = new MySqlDataAdapter(cmd);
                //adapter.Fill(dt);
                tek_max_id = (int)cmd.ExecuteScalar();
                 con.Close();
                // dt.Rows.Clear();
            }
 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
return tek_max_id;
}
И в таймере проверяем значение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void timer1_Tick(object sender, EventArgs e)
        {
if (max_id< CheckMaxId())
{
string sql = "SELECT * FROM washing where ID>"+max_id.ToString();
                cmd = new MySqlCommand(sql, con);
                con.Open();
                metroGrid1.Rows.Clear();
                adapter = new MySqlDataAdapter(cmd);
                adapter.Fill(dt);
                 con.Close();
                 dt.Rows.Clear();
max_id = CheckMaxId();
}
}
Добавлено через 15 минут
В CheckMaxId забыл убрать
C#
1
metroGrid1.Rows.Clear();
1
4 / 4 / 3
Регистрация: 20.11.2013
Сообщений: 150
13.02.2017, 14:48  [ТС]
Спасибо большое ошибка пока тут
return tek_max_id;

Использование локальной переменной которой не присвоено значение
Сделал так

int tek_max_id = 0;

Теперь все отлично работает! Спасибо разобрался с этим!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2017, 14:48
Помогаю со студенческими работами здесь

Добавление новой строки в DatagridView
Имеется DataGridView, связанная с источником данных. Как положено, последняя строка сетки - пустая. При добавлении в неё данных, она...

Добавление новой строки в dataGridView
Уважаемые форумчане! Помогите разобраться, как сделать, чтобы по нажатию кнопки считывалась информация из textBox и подходящая строка из БД...

Выделение новой строки в DataGridView
Данные в DataGridView берутся из ms sql, обновляются sql брокером, путем заполнения DataGridView заново Новые данные добавляются из...

Событие добавления новой строки в DataGridView
Здравствуйте, не подскажите в datagrid заношу данные вручную, а как чтобы при добавлении новой строки в ячейки уже было значение(чтобы...

DataGridView: Удаление непереданной новой строки невозможно
Доброго всем дня. Работаю с динамическим datagridview. Добавляю строки и столбцы в ручную: for (int i = 0; i &lt; 50; i++) ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru