使用VB.Net 2003创建的Web页面中的My DataGrid从SQL获取数据并包含一个Flag列。每行都添加了一个按钮列,因此,只需单击一下,行的标志就可以在“有效”和“无效”之间切换。
代码如下:
Private Sub CellClick(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
Session("Emp") = e.Item.Cells(2).Text
Session("Course") = e.Item.Cells(0).Text
Session("Flag") = e.Item.Cells(8).Text
'Change Flag Status in SQL
If Session("Flag") = "Active" Then
Dim updateState As String = "update [DB3].[dbo].[EMP_COURSE]" _
& "set [Flag] = 'Inactive'" _
& "where Employee_No = '" & Session("Emp") & "'" _
& "and CourseCode = '" & Session("Course") & "'"
Dim conn = SQLDB
Dim command As New SqlCommand(updateState, conn)
conn.open()
command.ExecuteNonQuery()
conn.close()
conn.dispose()
command.Dispose()
ElseIf Session("Flag") = "Inactive" Then
Dim updateState As String = "update [SQLDB3].[dbo].[EMP_COURSE]" _
& "set [Flag] = 'Active'" _
& "where Employee_No = '" & Session("Emp") & "'" _
& "and CourseCode = '" & Session("Course") & "'"
Dim conn = SQLDB
Dim command As New SqlCommand(updateState, conn)
conn.open()
command.ExecuteNonQuery()
conn.close()
conn.dispose()
command.Dispose()
End If
'auto-refresh page
Response.Redirect(HttpContext.Current.Request.Url.ToString(), True)
End Sub
实际上,为了模拟Flag列自动刷新其数据,我对整个Web页面进行了刷新以获取最新数据。但是,随着数据量的增加,加载所需的时间也会更长。
我还在网页中添加了一个过滤器功能,以显示特定的数据行。这样,用户可以更改标志而不必向下滚动太多。
由于每次更改标志都会刷新页面,因此DataGrid会重置为显示完整表。
有没有一种方法可以刷新DataGrid而不刷新整个页面,同时保留所有已完成的过滤器设置?