4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
1

Обновление данных в DataGridView по таймеру

16.06.2015, 12:40. Показов 4515. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, подскажите как правильно сделать - у меня на форме создаются и заполняются гриды через функцию.
Мне надо заставить их обновляться. Так вот, как правильно это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2015, 12:40
Ответы с готовыми решениями:

Обновление Datagridview по таймеру, только если данные в источнике были изменены
Как сделать обновление Datagrid по таймеру, но с проверкой, что было добавлено (удалено) при...

Обновление данных в DataGridView
как сделать так, чтобы после каждого изменения содержимого ячейки, DataGridView обновляла свои...

Обновление данных в DataGridView
у меня есть код,все работает.По запросу из БД выводится информация. НО потом я вношу изменения в...

Обновление данных в datagridview
Всем привет! У меня есть бд Access. Из неё берутся данные и заносятся в datagridview1 с помощью...

16
Эксперт .NET
5531 / 4296 / 1216
Регистрация: 12.10.2013
Сообщений: 12,329
Записей в блоге: 2
16.06.2015, 13:10 2
Цитата Сообщение от Pasterna AS Посмотреть сообщение
как правильно это сделать?
Отдельный поток/таймер, который и будет вызывать метод, их обновляющий.
1
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.06.2015, 16:10 3
Цитата Сообщение от Pasterna AS Посмотреть сообщение
на форме создаются и заполняются гриды через функцию.
Откуда заполняются? Зачем их обновлять?
0
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
17.06.2015, 05:14  [ТС] 4
nio, из таблицы заполняются ,каждый отдельной информацией.
так как в таблицы данные изменяются, вот мне и надо чтобы на форме тоже менялись. таблица содержит крайние значения нескольких таблиц. плюс еще показывает наличие связи к бд.
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.06.2015, 11:07 5
Цитата Сообщение от Pasterna AS Посмотреть сообщение
Мне надо заставить их обновляться. Так вот, как правильно это сделать?
Лучше организовать это с помощью таймера и фонового потока. Почитай, может пригодится Контроль изменений в сетевых БД
1
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
17.06.2015, 13:52  [ТС] 6
nio, а есть способ следить за связью с бд через си шарп? или лучше это делать через sql?
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.06.2015, 14:19 7
Цитата Сообщение от Pasterna AS Посмотреть сообщение
способ следить за связью с бд через си шарп? или лучше это делать через sql?
я не понял вопрос. Это какой-то набор слов не имеющий смысла.
что ты понимаешь под "связью с бд"?
C# - это язык программирования, SQL - тоже язык, они разные и решают разные задачи.
0
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
18.06.2015, 05:51  [ТС] 8
nio, видимо корректно спрашивать не научился я)

передо мной стоит задача следить есть ли связь с источниками данных. и выводить все это на форму.
типо - связь да/нет. под источником данных подразумевается связанные серверы. мне нужно в рельном вреени следить есть ли с ними связь.
0
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
18.06.2015, 08:42 9
есть ли связь с источниками данных
А просто Connection.Open(); и Connection.Close(); через определенный интервал не устроит? По другому даже не представляю как проверять... Возможно еще вот так надо подумать
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.06.2015, 09:26 10
Цитата Сообщение от Pasterna AS Посмотреть сообщение
передо мной стоит задача следить есть ли связь с источниками данных
в этом нет необходимости. При отсутствии связи соединение не будет установлено, и запрос не выполнится, т.е. достаточно try-catch с нормальным обработчиком. В "древние" времена проверка наличия соединения была актуальна, но при работе с отсоединёнными базами данных весь смысл заключается в том, что большую часть времени связи с БД нет, она устанавливается только на время выполнения запроса.

Работая с реальным софтом с удалёнными БД могу сказать, что в рамках локальной сети данная опция не востребована чуть менее чем всегда. Никто не смотрит в статусбар и не читает, что там написано
1
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
18.06.2015, 11:07  [ТС] 11
nio, эх, начальство бы тоже так считало)
0
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
18.06.2015, 11:29 12
ну если так уж сильно хочется, почему бы не пускать отдельный поток для проверки через каждые там 5 минут, что соединение не отвалилось...
но я согласен с nio, что это нафик никому не нужно.
1
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
18.06.2015, 13:57  [ТС] 13
Shoorup_SCBist, а что в этом отдельном потоке делать? как вы писали open-close?

Добавлено через 14 минут
nio, Shoorup_SCBist, тут ситуация такая - что нужно за этими источниками, чтобы с них текла инфа постоянно и не было разрывов. Вот отдельный модуль и пишу для такого, шде последние значения и даты и собственно связь. такое вот дело)
0
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
18.06.2015, 14:23 14
Я конечно не спец... но собственно я так и делаю. Вроде все работает и как надо. Просто если не в поток, то приложение зависнет, если например не тот адрес указали или еще чего... или если соединения не будет. Например у меня в гигабитной сетке при первом подключении к серверу задержка где-то секунда, потом незаметна - это если все гуд. Но если например сервер недоступен и пытаемся к нему закконектится, то процедура эта секунд на 15. Пользователи от таких зависов волосы на опе рвать будут. Поэтому пусть поток пыхтит.
1
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.06.2015, 16:14 15
Цитата Сообщение от Pasterna AS Посмотреть сообщение
чтобы с них текла инфа постоянно и не было разрывов
Ну для начала следует сказать, что фактически непрерывности быть не может, можно организовать такую частоту приёма данных, что процесс будет казаться непрерывным. Но данные в базе будут появляться с какими-то промежутками времени. Целесообразно забирать данные после их появления. Также следует учитывать, какие именно данные будут в этой таблице, и на сколько велика в них необходимость, что нужна непрерывная заливка. Опять же любое решение имеет свою цену. Можно организовать запросы с частотой 25 раз в секунду, но при больших объёмах данных и большом количестве пользователей, возрастёт нагрузка на СУБД, есть вероятность что из-за большого количества данных или некачественного сетевого соединения запросы клиента не будут успевать отрабатывать до начала следующего запроса, это если забирать данные целиком, если забирать данные только "свежие", то проблема частично решится, но появятся вопросы синхронизазации.

В пятом посте я давал ссылку на принципы обновления данных, рекомендую ещё раз внимательно почитать.

Добавлено через 7 минут
ЗЫ: если будет идти "непрерывная" заливка данных, то городить индикатор наличия соединения смысла нет, ошибка выскочит как только соединение будет потеряно, а нагружать сервер дополнительными проверками в данном случае точно нет смысла, это только ухудшит ситуацию
1
4 / 4 / 3
Регистрация: 06.05.2015
Сообщений: 93
19.06.2015, 10:21  [ТС] 16
insite2012, а создать его надо в самой главной форме? или где у меня тчока входа main? или можно где угодно?

Добавлено через 2 часа 24 минуты
Shoorup_SCBist, а можно на определенный ипи адрес слать проверку, типо есть с ним свзь или неть? и получат ьпотом отчет об этом? через шрап
0
11 / 11 / 0
Регистрация: 16.09.2013
Сообщений: 75
19.06.2015, 10:33 17
Pasterna AS, не претендую на красоту и правильность...
Вот так например я сделал (пока) сам коннект:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static SqlConnection Connect(string ServerAddres, string DBName, bool IntegratedSecurity, string User, string Password)
        {
            SqlConnectionStringBuilder SQLConnStringBuilder = new SqlConnectionStringBuilder();
            SQLConnStringBuilder["Data Source"] = ServerAddres;
            SQLConnStringBuilder["Initial Catalog"] = DBName;
            SQLConnStringBuilder["Integrated Security"] = IntegratedSecurity;
            if (!IntegratedSecurity)
            {
                SQLConnStringBuilder["User"] = User;
                SQLConnStringBuilder["Password"] = Password;
            }
 
            try
            {
                SqlConnection Connection = new SqlConnection(SQLConnStringBuilder.ConnectionString);
                Connection.Open();
                return Connection;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка подключения", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
                return null;
            }
Думаю все понятно. В вашем случае возможно MessageBox не нужен а просто возвращать в нужное место ошибку
Ну и вызываем все это через некоторое время. Например в событии тик таймера пишем
C#
1
bgWorkerConnect.RunWorkerAsync();
В событии backgroundworker что-то типа:
C#
1
2
3
4
private void bgWorkerConnect_DoWork(object sender, DoWorkEventArgs e)
        {
            Connection = DBconnect.Connect(textBoxServerIP.Text, textBoxDataBase.Text, IntegratedSecurity, textBoxLogin.Text, textBoxPassword.Text);
        }
ну и в событии bgWorkerConnect_RunWorkerCompleted
уже выводим куданить сообщение что коннект есть ли нет
ну и если есть можно его наверно и закрыть Connection.Close();
1
19.06.2015, 10:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2015, 10:33
Помогаю со студенческими работами здесь

Обновление данных из DataGridView в БД
Доброго всем дня! Я новичок в этом деле, но очень хочу разобраться. Ситуация в следующем. У меня...

DataGridView обновление данных в базе.
Возникла следующая проблема: есль база access есть динамический контрол datagridview заполняемый...

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

Обновление данных в БД из dataGridView (DataSet)
Здравствуйте! Не так давно начал изучение c#, пишу простенькую программку для работы с БД. На форме...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru