麻烦大侠帮忙,我刚学ASP.NET

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:55:32
Dim dt As New DataTable
Dim oda As OleDb.OleDbDataAdapter
Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb;User Id=;Password=;")

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Me.IsPostBack = True Then
Dim strSql As String = "SELECT name FROM test1"
oda = New OleDb.OleDbDataAdapter(strSql, conn)
oda.Fill(dt)
DropDownList1.DataSource = dt
DropDownList1.DataTextField = "name"
DropDownList1.DataBind()
Label1.Text = dt.Rows.Count()
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = dt.Rows.Count()
End Sub

我在PAGELOAD里设置填充了DATATABLE ---

ASP.NET是平台,VB.NET是基于那个平台的语言,看你写的程序,不就是VB.NET吗

主要问题出在这里:If Not Me.IsPostBack = True Then
这句的意思是当页面首次打开时执行下面语句,按下Button后,页面就经过了一次回传(即PostBack),也就是说此时IsPostBack的值为True

所以页面打开时DataTable被填充了,但按下Button后那段填充的代码不会被执行到,所以那个dt就是空的了

变量的值会在回传后丢失,需要重新赋值,如果想回传后依旧保留,可以用ViewState

请注意变量的生命周期。全局变量的生命周期是多长呢?

仔细看看它的存在周期