WebForm1.aspx页面
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="xinjie.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid" style="Z-INDEX: 101; LEFT: 152px; POSITION: absolute; TOP: 40px" runat="server"
Width="296px" Height="224px" AllowCustomPaging="True" AllowPaging="True" AutoGenerateColumns="True"
OnPageIndexChanged="DataGrid_SelectedIndexChanged" PageSize="20" CellPadding="2" CellSpacing="2"
HorizontalAlign="Center" DataKeyField="id" BackColor="#FFFFC0" BorderColor="#C0FFFF" BorderStyle="Outset"
ForeColor="#8080FF" ShowFooter="True" AllowSorting="True" EnableViewState="False">
<SelectedItemStyle BorderColor="#FFC0C0" BackColor="Red"></SelectedItemStyle>
<PagerStyle NextPageText="下一页" PrevPageText="上一页" Position="TopAndBottom"></PagerStyle>
</asp:DataGrid></FONT>
</form>
</body>
</HTML>Public Class WebForm1
    Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Conn = New System.Data.SqlClient.SqlConnection
        Me.Objcmd = New System.Data.SqlClient.SqlCommand
        '
        'Conn
        '
        Me.Conn.ConnectionString = "workstation id=LXYZW;packet size=4096;user id=sa;integrated security=SSPI;data so" & _
        "urce=""LXYZW\LXYZW"";persist security info=False;initial catalog=lxy_zhouwei"
        '
        'Objcmd
        '
        Me.Objcmd.Connection = Me.Conn    End Sub
    Protected WithEvents Conn As System.Data.SqlClient.SqlConnection
    Protected WithEvents Objcmd As System.Data.SqlClient.SqlCommand
    Protected WithEvents DataGrid As System.Web.UI.WebControls.DataGrid    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
    '不要删除或移动它。
    Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
        '不要使用代码编辑器修改它。
        InitializeComponent()
    End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Not IsPostBack Then
            Conn.Open()            Objcmd.CommandText = "select id ,stu_num,stu_num,stu_profession from users"            Dim Obj_reader As SqlClient.SqlDataReader = Objcmd.ExecuteReader
            DataGrid.DataSource = Obj_reader
            DataGrid.DataBind()        End If
    End Sub    Sub DataGrid_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As DataGridPageChangedEventArgs) Handles DataGrid.PageIndexChanged
        DataGrid.CurrentPageIndex = e.NewPageIndex
        Conn.Open()        Objcmd.CommandText = "select id,stu_num,stu_num,stu_profession from users"        Dim Obj_reader As SqlClient.SqlDataReader = Objcmd.ExecuteReader
        DataGrid.DataSource = Obj_reader
        DataGrid.DataBind()
    End Sub
End Class
那个分页显示出来拉,但是不能点击。是怎么回事啊?

解决方案 »

  1.   

    <% @ Page Language = "VB" %>  <% @ Import Namespace = "System.Data" %>  <% @ Import Namespace = "System.Data.OleDb" %>    <script runat = "server" >  Const Record_Per_Page   As Short = 5 '定义每一页显示的记录数  Private Script_Name As String Sub Page_Load ( Source As Object , e As EventArgs )  Script_Name = GetPageName ( )  '第二种方式来分页显示数据  ShowRecords ( )  End Sub    '得到起始浏览超链接字符串  Function GetPageName ( ) As String  Dim Str As String  Dim Pos As Short  Str = Request.ServerVariables ( "Script_Name" ).Trim ( )  Pos = Str.LastIndexOf ( "/" )  If Pos >= 0 Then  Return Str.SubString ( Pos + 1 )  Else  Return Str  End If  End Function    Private Sub ShowRecords ( )  Dim strConn As String '定义数据连接字符串 Dim SQL As String  '定义SQL语句  Dim odConn As OleDbConnection  Dim odAdapt As OleDbDataAdapter  Dim DS As DataSet '创建DataSet对象  Dim DT As DataTable '创建DataTable对象  Dim nRecCount As Integer '保存记录总数  Dim nPageCount As Integer '保存总共的数据页面数目  Dim nPage As Integer '存放要浏览当前数据页面号  Dim nStart As Integer '存放当前页面的起始记录序号  Dim nEnd As Integer '存放当前页面的终止记录序号  Dim nPageEnd As Integer '存储当前页面的最后一面的序号  Dim i As Integer '确认要浏览的页面序号nPage = Convert.ToInt32 ( Request.QueryString ( "Page" ) )  SQL = "SELECT * FROM tblItem "    '创建数据连接字符串  strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; " & _  " Data Source = " & Server.MapPath ( "data.mdb" ) & " ; " & _  " User ID = ; Password = ; "  Try  '得到数据记录总数  odConn = New OleDbConnection ( strConn )  odAdapt = New OleDbDataAdapter ( SQL , odConn )  DS = New DataSet  odAdapt.Fill ( DS )  DT = DS.Tables ( 0 )  nRecCount = DT.Rows.Count  Catch e As Exception  Response.Write("错误信息: <b >" & e.Message & "</b > <p > " )  nRecCount = 0  End Try    If nRecCount > 0 Then  ' 确定数据记录要显示的页面数  nPageCount = nRecCount \ Record_Per_Page  If nRecCount Mod Record_Per_Page > 0 Then  nPageCount += 1  End If    '确认浏览命令中的页面参数是否越界,如果越界则重置页面序号  If nPage < 1  Then  nPage = 1 End If  If  nPage > nPageCount Then  nPage = nPageCount End If    Response.Write ( "总共有数据记录" & nRecCount.ToString ( ) & " 条" & "。<br >" )  Response.Write(" <p > <b >第二种分页显示为:</b > <p > " )    '确认当前页面的开始记录和终止记录  nStart = Record_Per_Page *  ( nPage - 1 )  nEnd = nStart + Record_Per_Page - 1  If nEnd > nRecCount - 1 Then  nEnd = nRecCount - 1  End If  '在屏幕中输出记录  For i = nStart To nEnd  Response.Write ( DT.Rows ( i ) ( "ItemName" ) & " <br > " )  Next  End If  Response.Write ( " <p > 数据导航: " )  nPageEnd = nPage + 3  If nPageEnd > nPageCount  nPageEnd = nPageCount  End If  For i = 1 To nPageEnd  If i = nPage Then  Response.Write ( " <b > " & i.ToString ( ) & " </b > " )  Else  Response.Write ( "<A HREF = """ & SCRIPT_NAME & _  "?Page=" & ( i ).ToString ( )  & _  """ > " & i.ToString ( ) & "</A > " )  End If  Next    If nPageEnd < nPageCount Then  Response.Write ( "<A HREF = """ & SCRIPT_NAME & _  "?Page=" & ( nPageEnd + 1 ).ToString ( ) & _  """ >更多...</A > " )  End If  End Sub  </script > 
      本文介绍的这二种分页浏览记录类型虽然采用的数据库都是本地数据库,但对其他类型的数据库也是一样适用的,这只需要修改一下数据连接字符串就可以实现了,譬如如果采用了SQL Server数据库。此SQL Server数据库服务器是"Server1",数据库是"Data",用户名为缺省的"sa",没有设定密码。只需要把上面二段程序中的字符串"strConn"变换成:    strConn = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = Data ; Data Source = server1 " 
      

  2.   

    那么多代码看着眼晕啊.
    建议将数据绑定写一个过程,在changed过程中调用
      

  3.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If Not IsPostBack Then
                Conn.Open()            Objcmd.CommandText = "select id ,stu_num,stu_num,stu_profession from users"            Dim Obj_reader As SqlClient.SqlDataReader = Objcmd.ExecuteReader
                DataGrid.DataSource = Obj_reader
                DataGrid.DataBind()        End If
        End Sub    Sub DataGrid_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As DataGridPageChangedEventArgs) Handles DataGrid.PageIndexChanged
            DataGrid.CurrentPageIndex = e.NewPageIndex
            Conn.Open()        Objcmd.CommandText = "select id,stu_num,stu_num,stu_profession from users"        Dim Obj_reader As SqlClient.SqlDataReader = Objcmd.ExecuteReader
            DataGrid.DataSource = Obj_reader
            DataGrid.DataBind()
        End Sub