我们有一个存储过程从表中获取数据,让我们从一个db1中调用它,并填充一个表,在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之前使用存储过程首次使用table1中的数据更新table2。
答案 0 :(得分: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连接。
答案 1 :(得分:0)
Kenny我已经为你准备了完整的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/
快乐编码肯尼!