我使用了DataGrid的自带的分页功能,当点击导航栏“下一页”的LinkButton按钮时,它会调用ItemCommand事件而不执行PageIndexChanged事件,从而导致错误:索引index超出范围。我改怎么办才能把分页按钮的点击事件定位到PageIndexChanged事件呢????
高手们请告知小弟,万分感激!!!稍微说详细点!~~~

解决方案 »

  1.   

    因为点击分页页码的时候 需要从数据源重新读取数据,你可以将数据源读取后放在缓存中。
    '选择了分类后,执行此子例程
        '为表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
      

  2.   

    ItemCommand和PageIndexChanged两个事件是不冲突的。是不是你的代码有问题?
      

  3.   

    呵呵,我自己解决了,谢谢你的思路。
    我后来在ItemCommand做了个判断当e.CommandName=="Page"的时候就什么都不执行,程序会自动跳转到PageIndexChanged事件的。