代码如下:
<%@ Page Language="VB" AutoEventWireup="True" Debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
     Dim MyConnection as OleDbConnection
     Dim MyDataAdapter As OleDbDataAdapter      Sub Page_Load(sender As Object, e As EventArgs) 
      MyConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/data.mdb")         If Not IsPostBack Then 
            BindGrid()
         End If
      End Sub      Sub MyDataGrid_Page(sender as Object, e As DataGridPageChangedEventArgs) 
         MyDataGrid.CurrentPageIndex = e.NewPageIndex
         BindGrid()
      End Sub      Sub BindGrid() 
      MyDataAdapter = new OleDbDataAdapter("select * from [info] order by id asc", MyConnection)
          Dim DS As DataSet = new DataSet()
          MyDataAdapter.Fill(DS,"min") 
          MyDataGrid.DataSource =DS.Tables("min").DefaultView
          MyDataGrid.DataBind()
      End SubSub MyDataGrid_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) 
    If e.Item.ItemType = ListItemType.Pager Then         '添加DropDownList控件,显示分页.
Dim drp1 As DropDownList = New DropDownList
drp1.ID="drpPage"
        drp1.AutoPostBack="true"
        AddHandler drp1.SelectedIndexChanged, AddressOf drp1_Changed        drp1.DataSource = CreateDataSource()
        drp1.DataTextField = "PageTextField"
        drp1.DataValueField = "PageValueField"
        drp1.DataBind()
      e.Item.Cells(0).Controls.AddAt(e.Item.Cells(0).Controls.Count, drp1) 
    End If 
End Sub     Function CreateDataSource() 
         Dim dt As DataTable = New DataTable()
         
         dt.Columns.Add(new DataColumn("PageTextField", GetType(String)))
         dt.Columns.Add(new DataColumn("PageValueField", GetType(String)))
 
 Dim i as Integer 
 For i = 1 To MyDataGrid.PageCount
         dt.Rows.Add(CreateRow(i, i, dt))
 Next i
         Dim dv As DataView = New DataView(dt)
         Return dv
      End Function      Function CreateRow(Text As String, Value As String, dt As DataTable) As DataRow 
         Dim dr As DataRow = dt.NewRow()
         dr(0) = Text
         dr(1) = Value
         Return dr
      End Function    Sub drp1_Changed(sender As Object, e As EventArgs)        
        'Response.Write(drpPage.SelectedItem.Value)
    End Sub
</script>
<form runat="server">
    <asp:DataGrid id="MyDataGrid" 
           AllowPaging="True" 
           PageSize="3" 
           OnPageIndexChanged="MyDataGrid_Page" 
           runat="server"
   AutoGenerateColumns="True"
   Width="500"
   OnItemCreated="MyDataGrid_ItemCreated">
         <HeaderStyle BackColor="Navy" 
                      ForeColor="White" 
                      Font-Bold="True" />
         <PagerStyle Mode="NextPrev"
                     HorizontalAlign="Right" 
 NextPageText="下一页"
                     PrevPageText="上一页"/>
      </asp:DataGrid>
</form>现我可把分页的页数填充到dropdownlist中,可是触发drp1_Changed事件时,出错,提示"名称“drpPage”未声明。"请问怎么解决呢?我在想drp1_Changed就对datagrid进行分页操作了.
谢谢.

解决方案 »

  1.   

    你是采用DataGrid自带的分页方式还是自定义分页?
      

  2.   

    Response.Write(drpPage.SelectedItem.Value)这里的问题
    由于drpPage是动态加入的 而后台代码对于drpPage一无所知的,它不知道你在哪里定义了drpPage
    你应该采用FindControl方法找到该控件
      

  3.   

    xiahouwen(武眉博<活靶子.NET>) ,我用的是datagrid自已的分页呀,现在就是在分页按扭处加一一Dropdownlist控件让它分页呀.请问要怎样做呢?你说的findcontrol要怎样用才行呢?谢谢.
      

  4.   

    Sub drp1_Changed(sender As Object, e As EventArgs)  
     dim ddl as DropDownList = DirectCast(sender,    DropDownList)  
     Response.Write(ddl.SelectedItem.Value)
    End Sub
      

  5.   

    come on, you know that is the same variableSub drp1_Changed(sender As Object, e As EventArgs)  
     dim abc as DropDownList = DirectCast(sender,    DropDownList)  
     Response.Write(abc.SelectedItem.Value)
    End Sub