1

我们有一个从表中获取数据的存储过程,让我们从一个 db1 中将其称为 table1 并填充一个表,在 db2 中称为 table2。

我们安排这个存储过程每隔 5 分钟执行一次这个功能。这工作正常。

鉴于用户大多在执行其他管理功能时离开他们的应用程序,我们创建了一个刷新按钮,在单击该按钮时刷新 GridView。

Protected Sub Refresh_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Refresh.Click
    ' Clean up text to return the GridView to it's default state
      strSearch.Text = ""
      SearchString = ""
      gridView1.DataBind()
End Sub

我们希望同时单击此刷新按钮以使存储过程更新 table2 并同时刷新 GridView。

我知道gridview1.Databind()使用 table2 中的最新数据刷新 GridView,但是在刷新 GridView 之前,如何确保首先使用存储的 proc 使用 table1 中的数据更新 table2。

4

2 回答 2

0

只需在调用 gridView1.DataBind() 之前从应用程序调用存储过程

这是从代码中调用存储过程的方式:

public object ExecuteStoredProcedureAsValue(SqlConnection conn, 
                                            string storedProcName, 
                                            List<SqlParameter> parameters) 
{
    using (var command = new SqlCommand(storedProcName, conn)) {
        command.CommandType = CommandType.StoredProcedure;

        if (parameters != null)
            parameters.ForEach(p => command.Add(param));

        object result = null;
        using (var reader = command.ExecuteReader()) {
            while (reader.Read())
            {
                result = reader[0];
                break;
            }
        }
        return result;
    }
}

请注意,“conn”是 SqlConnection 对象。您应该在调用此代码之前初始化并打开 sql 连接。

于 2012-08-21T16:37:43.997 回答
0

肯尼我已经为你准备了完整的vb代码,看看:

Private Sub CallRefresh()
     Dim connectionString As String = "Initial Catalog=myDataBase;data source=myServer;Integrated Security=SSPI;"
     Dim storedProcName As String = "ActivateServerTask"
     Dim conn As SqlConnection = New SqlConnection(connectionString)
     conn.Open()
     Dim command As SqlCommand = New SqlCommand(storedProcName, conn)
     command.CommandType = CommandType.StoredProcedure
     command.Parameters.Add(New SqlParameter("@taskId", 1))
     command.ExecuteNonQuery()
     command.Dispose()
     conn.Close()
     conn.Dispose()
 End Sub


 Protected Sub Refresh_Click(ByVal sender As Object, ByVal e As EventArgs) Handles     Refresh.Click       
      CallRefresh()
      gridView1.DataBind()       
 End Sub 

CallRefresh 打开连接,使用“taskId”参数执行“ActivateServerTask”存储过程,最后关闭连接...注意我正在使用具有集成安全性的 sql 连接。您可以在此处找到其他连接字符串:http: //www.connectionstrings.com/

快乐编码肯尼!

于 2012-08-21T18:15:27.787 回答