当DB中的表发生更改时,自动刷新网格

时间:2010-11-23 13:27:59

标签: c# winforms gridview refresh

我正在让Windows应用程序访问内部服务器并根据前端应用程序的用户请求创建安装文件。

1)当我们请求服务器从前端应用程序创建安装文件时,我们将在表中添加详细信息。(req id =“101”,Status =“Started”等) 并在网格中显示这些条目。

2)我们根据FIFO(队列)处理来自服务器的请求并创建安装文件。创建安装文件后,我们将更新到表status =“Completed”。

问题:一旦我们将请求的状态更新到表中(在服务器中完成),我们需要在前端应用程序中刷新网格。

我不想在表单中放置计时器来刷新数据源。有没有其他方法可以达到这个目的?

我的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 :(得分:0)

使用INotifyPropertyChanged事件。

答案 1 :(得分:0)

您可以使用触发器将新行的事实输出到特殊的日志表表中。然后,如果该日志历史记录表中有新行,则可以创建返回true或false的Web服务。处理完新行后,您可以删除它们,依此类推。您可以使用带有计时器的jQuery来调用Web服务,获取响应,并根据Web服务返回的内容更新控件。也许有更简单的方法可以做到这一点,但由于明显的性能问题,我不会经常监视我的主表的新行。