因为点击分页页码的时候 需要从数据源重新读取数据,你可以将数据源读取后放在缓存中。 '选择了分类后,执行此子例程 '为表lxp创建一个dataview,只显示此分类电影,绑定到dgrdlxp控件 Sub dgrdtype_itemcommand(ByVal s As Object, ByVal e As DataListCommandEventArgs) Dim dvwlxp As DataView Dim strtype Cache.Remove("lxp") dgrdlxp.CurrentPageIndex = 0 dgrdtype.SelectedIndex = e.Item.ItemIndex strtype = dgrdtype.DataKeys(e.Item.ItemIndex) dview1 = dstlxp.Tables("view_lxp").DefaultView dview1.RowFilter = "type='" & strtype & "'" dgrdlxp.DataSource = dview1 Cache("lxp") = dview1 dgrdlxp.DataBind() End Sub Function getlxp() As DataView Dim dview1 As DataView dview1 = Cache("lxp") Return dview1 End Function Sub dgrdlxp_pageindexchanged(ByVal s As Object, ByVal e As DataGridPageChangedEventArgs) dgrdlxp.CurrentPageIndex = e.NewPageIndex dgrdlxp.DataSource = getlxp() dgrdlxp.DataBind() End Sub
'选择了分类后,执行此子例程
'为表lxp创建一个dataview,只显示此分类电影,绑定到dgrdlxp控件
Sub dgrdtype_itemcommand(ByVal s As Object, ByVal e As DataListCommandEventArgs)
Dim dvwlxp As DataView
Dim strtype
Cache.Remove("lxp")
dgrdlxp.CurrentPageIndex = 0
dgrdtype.SelectedIndex = e.Item.ItemIndex
strtype = dgrdtype.DataKeys(e.Item.ItemIndex)
dview1 = dstlxp.Tables("view_lxp").DefaultView
dview1.RowFilter = "type='" & strtype & "'"
dgrdlxp.DataSource = dview1
Cache("lxp") = dview1
dgrdlxp.DataBind()
End Sub
Function getlxp() As DataView
Dim dview1 As DataView
dview1 = Cache("lxp")
Return dview1
End Function
Sub dgrdlxp_pageindexchanged(ByVal s As Object, ByVal e As DataGridPageChangedEventArgs)
dgrdlxp.CurrentPageIndex = e.NewPageIndex
dgrdlxp.DataSource = getlxp()
dgrdlxp.DataBind() End Sub
我后来在ItemCommand做了个判断当e.CommandName=="Page"的时候就什么都不执行,程序会自动跳转到PageIndexChanged事件的。