Обновлять сетку автоматически при изменении таблицы в БД - PullRequest
0 голосов
/ 23 ноября 2010

У меня есть приложение Windows, обращающееся к внутреннему серверу и создающее файл установки на основе запроса пользователя из приложения Front End.

1) Когда мы запрашиваем сервер для создания установочного файла из приложения Front End, мы добавляем детали в таблицу (req id = "101", Status = "Started" и т. Д.) и показал эти записи в сетке.

2) Мы обрабатываем запрос с сервера на основе FIFO (Очередь) и создаем установочный файл. После того, как файл установки будет создан, мы обновим таблицу до статуса = "Завершено".

Проблема: как только мы обновляем статус запроса в таблицу (выполнено на сервере), нам нужно обновить Grid в приложении Front End.

Я не хочу помещать таймер в форму для обновления источника данных. Есть ли другой способ добиться этого?

Мое извлечение данных в моей программе на c #

public DataTable GetCustomPatchGridDatasource(string Requesteduser)
        {
            try
            {
                dbConn = new DBConnection();
                myconn = dbConn.CreateConnection();
                myCommand = new SqlCommand();
                myCommand.CommandText = "sp_Patch_GetPatchDetails";
                myCommand.CommandType = CommandType.StoredProcedure;
                myCommand.Parameters.Add(new SqlParameter("@RequestedUserEmail", Requesteduser));
                myCommand.Connection = myconn;
                myDatatadapter = new SqlDataAdapter(myCommand);
                datatable = new DataTable();
                myDatatadapter.Fill(datatable);
                dbConn.CloseConnection();
                return datatable;
            }
            catch (Exception ex)
            {
                dbConn.CloseConnection();
                MessageBox.Show(ex.Message, "Message");
                return null;
            }
        }

Ответы [ 2 ]

0 голосов
/ 23 ноября 2010

Вы можете использовать триггер для вывода факта новой строки в специальную таблицу таблицы журнала. Затем вы можете создать веб-сервис, который возвращает true или false, если в этой таблице журнала есть новые строки. После обработки новых строк вы можете удалить их и так далее. Вы можете использовать jQuery с таймером для ajax-вызова в ваш веб-сервис, получения ответа и обновления вашего элемента управления в зависимости от того, что возвращает веб-сервис. Возможно, есть и более простые способы сделать это, но я бы не стал постоянно следить за новыми строками в моей основной таблице из-за очевидных проблем с производительностью.

0 голосов
/ 23 ноября 2010

Использовать событие INotifyPropertyChanged.

...