在web页面中,连接好数据库,并填充了DataSet,我想用TextBox来显示DataSet中的数据,然后有4个按钮分别为"第一页","上一页","下一页","最末页",用来查看每条数据.除了"第一页"和"最末页",能正确响应以外,"上一页"和"下一页"都无效,是咋回事咧?我的方法和相关代码如下:我定义了一个类库来实现数据库的连接,并获得相应的数据,代码如下:
Imports System
Imports System.Data
Imports System.Data.SqlClientPublic Class dataClass
'定义一个数据库连接,下面所以的方法都用到了这个连接
Dim sqlConn As New SqlConnection("server=localhost;uid=sa;pwd=123456;database=shopping") '自定义函数,用于获得指定行、列的数据
Public Function getData(ByVal n As Integer, ByVal m As Integer) As String
Dim result As String
Dim adapter As New SqlDataAdapter("b_showNews", sqlConn)
adapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New DataSet
adapter.Fill(ds, "news")
result = ds.Tables("news").Rows(n).Item(m)
Return result
End Function '自定义函数,用于获得数据集的行数
Public Function getDSRows() As Integer
Dim rows As Integer
Dim adapter As New SqlDataAdapter("b_showNews", sqlConn)
adapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New DataSet
adapter.Fill(ds, "news")
rows = ds.Tables("news").Rows.Count
Return rows
End Function
End Class然后,在应用程序中,引用这个项目.为了获得当前行,定义一个整型变量n来表示当前行,代码如下:
.
.
.
'前面的略
'n为当前行号
Dim n As Integer = 0 '定义一个新类,也就是上面引入的类库的实例
Dim myCla As New showData.dataClass '定义一个显示数据的函数
Private Function showTextBoxData()
Me.TextBox1.Text = myCla.getData(n, 0)
Me.TextBox2.Text = myCla.getData(n, 1)
Me.TextBox3.Text = myCla.getData(n, 2)
Me.TextBox4.Text = myCla.getData(n, 3)
Me.TextBox5.Text = myCla.getData(n, 4)
End Function Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
'显示第一条数据
showTextBoxData()
End If
End Sub '第一条
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
n = 0
showTextBoxData()
End Sub '上一条
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
n = n - 1
If n < 0 Then
n = 0
End If
showTextBoxData()
End Sub '下一条
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
n = n + 1
If n > myCla.getDSRows() - 1 Then
n = myCla.getDSRows() - 1
End If
showTextBoxData()
End Sub '最末条
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
n = myCla.getDSRows() - 1
showTextBoxData()
End Sub
End Class可是我点"上一条"和"下一条"按钮的时候n这个变量始终不变,不知是咋回事,我在窗体应用程序中使用同样的方法都能达到目的,但是在web应用程序中好象就不行了,狂郁闷~~~~~~~~~~~~谁能帮我看看呀?谢谢!
Imports System
Imports System.Data
Imports System.Data.SqlClientPublic Class dataClass
'定义一个数据库连接,下面所以的方法都用到了这个连接
Dim sqlConn As New SqlConnection("server=localhost;uid=sa;pwd=123456;database=shopping") '自定义函数,用于获得指定行、列的数据
Public Function getData(ByVal n As Integer, ByVal m As Integer) As String
Dim result As String
Dim adapter As New SqlDataAdapter("b_showNews", sqlConn)
adapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New DataSet
adapter.Fill(ds, "news")
result = ds.Tables("news").Rows(n).Item(m)
Return result
End Function '自定义函数,用于获得数据集的行数
Public Function getDSRows() As Integer
Dim rows As Integer
Dim adapter As New SqlDataAdapter("b_showNews", sqlConn)
adapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim ds As New DataSet
adapter.Fill(ds, "news")
rows = ds.Tables("news").Rows.Count
Return rows
End Function
End Class然后,在应用程序中,引用这个项目.为了获得当前行,定义一个整型变量n来表示当前行,代码如下:
.
.
.
'前面的略
'n为当前行号
Dim n As Integer = 0 '定义一个新类,也就是上面引入的类库的实例
Dim myCla As New showData.dataClass '定义一个显示数据的函数
Private Function showTextBoxData()
Me.TextBox1.Text = myCla.getData(n, 0)
Me.TextBox2.Text = myCla.getData(n, 1)
Me.TextBox3.Text = myCla.getData(n, 2)
Me.TextBox4.Text = myCla.getData(n, 3)
Me.TextBox5.Text = myCla.getData(n, 4)
End Function Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
'显示第一条数据
showTextBoxData()
End If
End Sub '第一条
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
n = 0
showTextBoxData()
End Sub '上一条
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
n = n - 1
If n < 0 Then
n = 0
End If
showTextBoxData()
End Sub '下一条
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
n = n + 1
If n > myCla.getDSRows() - 1 Then
n = myCla.getDSRows() - 1
End If
showTextBoxData()
End Sub '最末条
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
n = myCla.getDSRows() - 1
showTextBoxData()
End Sub
End Class可是我点"上一条"和"下一条"按钮的时候n这个变量始终不变,不知是咋回事,我在窗体应用程序中使用同样的方法都能达到目的,但是在web应用程序中好象就不行了,狂郁闷~~~~~~~~~~~~谁能帮我看看呀?谢谢!
解决方案 »
- NHibernate要怎么用,,,
- ASP.NET后台如何才能获得CKEDITOR的值?
- 如何在Webform下的rdlc报表传参?
- .Net中的SOCKET 和WPF的区别在哪,分别做哪一块的?
- datalist 更新基础问题
- 数据库中有多个连续空格的值,为什么查询出来时都变成一个空格了?
- 有人用FreeTextBox 1.6.3 吗?
- Session
- 單擊DataGrid中的某一行即自動鏈接到與該行相關的網頁中而不響應服務器事件,怎麼做?
- 如何判断输入的日期是否合法?
- 有没有人试图获取过客户端当前的 域名\用户名 信息?
- 如何提升ASP.NET的权限?想在win2003中创建AD用户....
不要设置n变量,改为一个ViewState变量或使用一个控件保存当前页的值
因此,在网页中,不同的服务器事件中,n都将被重新初始化,因此你的n在每一个服务器事件中都是以初始值出现的。
Private Function showTextBoxData()
Dim n As Int32
n = Convert.ToInt32(ViewState("RowNum")) Me.TextBox1.Text = myCla.getData(n, 0)
Me.TextBox2.Text = myCla.getData(n, 1)
Me.TextBox3.Text = myCla.getData(n, 2)
Me.TextBox4.Text = myCla.getData(n, 3)
Me.TextBox5.Text = myCla.getData(n, 4)
End Function然后在page_Load的时候写ViewState("RowNum")=0,再每个按钮中写:比如点“上一页”,那么ViewState("RowNum") -= 1