所以我从数据库中提取数据,然后计算该数据库上的所有数据,但在数据被提取之前计数。无论如何要阻止这个?
test.SelectCommand = Ssql
test.SelectParameters.Clear()
test.DataBind()
System.Threading.Thread.Sleep(1000)
counter = OSG.Items.Count
MsgBox(counter)
喝彩!
答案 0 :(得分:3)
计算数据源而不是数据网格中的项目。数据网格绑定将异步发生,并且不准确。例如,如果您的数据源是数据表,那么您可以:
Dim x As DataTable = New DataTable
Dim counter As Integer
counter = x.Rows.Count
编辑:要计算SQL数据源中的行,您必须处理“已选择”事件。创建一个名为myRowCount的类级变量,在选定的事件中设置它并在bind语句之后使用它:
Dim myRowCount As Integer
Protected SubSqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected
MsgBox(e.AffectedRows())
myRowCount = e.AffectedRows()
End Sub
然后你可以在代码中的其他地方使用myRowCount。