2011-05-10 185 views
1

所以即時從數據庫中提取數據,然後計算該數據庫中的所有數據,但它在數據被拉之前計數。無論如何要阻止這個?停止,直到代碼運行

test.SelectCommand = Ssql 
    test.SelectParameters.Clear() 
    test.DataBind() 

    System.Threading.Thread.Sleep(1000) 
    counter = OSG.Items.Count 

    MsgBox(counter) 

乾杯!

+0

在這種情況下什麼是'OSG'?什麼是「測試」? – David 2011-05-10 18:57:30

+0

osg datagrid,測試是數據源 – Sam 2011-05-10 18:59:16

回答

3

計算數據源而不是數據網格中的項目。 datagrid綁定將異步發生,並且不準確。例如,如果您的數據源是一個數據表,那麼你可以:

Dim x As DataTable = New DataTable 
Dim counter As Integer 
counter = x.Rows.Count 

編輯:要你必須處理的「選擇」事件SQL數據源計算行。請叫myRowCount一類級別的變量,將其設置在選定的事件和綁定語句之後使用它:

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。

+0

我得到'行'不是'System.Web.UI.WebControls.SqlDataSource'的成員。當我嘗試? – Sam 2011-05-10 22:02:26

+0

@Sam爲你做了這項工作? – nbushnell 2011-06-07 02:19:55