2013-10-03 4 views
0

Я заполняю datatable на page_load, чтобы использовать его позже.ASP.net - Datatables стать ничто на PostBack

Public serviceTable as Datatable 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      If IsPostBack = False Then 
       GetData() 
      End If 
End Sub 


Private Sub getData() 
     Dim cmd As SqlCommand 
     Dim ds As New DataSet 
     Dim da As SqlDataAdapter 
     Try 
      cmd = New SqlCommand(("dbo.getListofServices"), cn) 
      cmd.CommandType = CommandType.StoredProcedure 
      da = New SqlDataAdapter(cmd) 
      da.Fill(ds) 
      ServiceTable = ds.Tables(0) 
     Catch ex As SqlClient.SqlException 
      MsgBox(ex.ToString) 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     Finally 
      If (IsNothing(da) = False) Then da.Dispose() 
      If (IsNothing(cmd) = False) Then cmd.Dispose() 
     End Try 
End Sub 

Я хочу использовать serviceTable позже Button_Click

Protected Sub btnView_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnView.Click 

    Try 
       If ServiceTable.Rows.Count = 0 Then Exit Sub 
       Repeater1.DataSource = ServiceTable 
       Repeater1.DataBind() 

      Catch ex As Exception 
       MsgBox(ex.ToString) 
      End Try 
    End Sub 

Я получаю сообщение об ошибке: ServiceTable не относится к объекту. Возможно ли, что datatable опустошается при обратной передаче? Как это исправить?

ответ

0

Используйте следующее заявление при декларировании Service Table:

Public serviceTable as New DataTable() 

Надежда это помогает ..

If Not (Session("MyData") Is Nothing) Then 
Session("MyData")=Servicetable 

После сообщения Назад, retieve сохраненного набора данных из переменного сеанса

как

ServiceTable= = (DataTable)Session["MyData"]; 

Надеюсь, это поможет.

+0

Ошибка больше не является ** Servicetable не относится к объекту **, но вместо этого теперь на постсоветском языке ** Servicetable.rows.count возвращает 0 ** – HelpASisterOut

+0

Я думаю, что значения не сохраняются между сообщениями обратной связи. .so.you нужно использовать переменные сеанса. –