代码如下:
<%@ 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进行分页操作了.
谢谢.
<%@ 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进行分页操作了.
谢谢.
解决方案 »
- 关于e_mail格式判断
- 求可放文本和图片的iframe代码(不要freetextbox)
- 类似 qq 空间 评论(发表)成功的效果
- TreeView中添加单击节点事件
- 初学者问题(谢谢您回答)为什么在SQLSeaver上能执行的SQL语句到了.net上就会出错呢?
- JS掉用隐藏域问题
- 急啊!怎么在2003中配置asp.net应用程序啊,救救我吧!
- asp.net加载....
- DataGrid设置成数字分页后,能不能把前后的"..." "...",变成“上一页”页码“下一页的形式”
- 关于用户控件的问题:如何定义用户控件中的Table控件!
- 问一个极其简单的数据库设计问题?
- C#.NET如何获取上一个页面表单中传递的参数?
由于drpPage是动态加入的 而后台代码对于drpPage一无所知的,它不知道你在哪里定义了drpPage
你应该采用FindControl方法找到该控件
dim ddl as DropDownList = DirectCast(sender, DropDownList)
Response.Write(ddl.SelectedItem.Value)
End Sub
dim abc as DropDownList = DirectCast(sender, DropDownList)
Response.Write(abc.SelectedItem.Value)
End Sub