【问题标题】:how to allow paging on gridview with custom databinding in place ?如何允许在 gridview 上使用自定义数据绑定进行分页?
【发布时间】:2012-03-17 10:07:42
【问题描述】:

我有点迷失在如何实现我想做的事情上。

我有一个gridview,一个checkboxlist。我在page_load 上绑定了gridview。每次用户选择一个复选框列表时,gridview 也会重新绑定。我现在有这样的东西。这不是实际的代码。非常感谢。

aspx 页面。

    <asp:gridview allowpaging="true" pagesize="30" gridview>

aspx.vb 页面

    page_load

    get datatable from database
    gridview.datasource = datatable
    gridview.databind()

    Sub checkboxlist_selectedindexchange

    dim selected = checkboxlist.selecteditem.tostring()       
    Dim selecteddatatable =  datatable.select(columns() = selected).copytodatatable()

    Sub gridview_Pageindexchanging

    gridview.pageindex = e.newpageindex
    gridview_databind()

    Sub gridview_databind()

    ?????????? 

那么,为了允许分页,我在这里放了什么?基本上,我在上面的例子中有 2 个数据表。在实际代码中,我有大约 5 个数据表和 4 个复选框列表。我不能使用数据源控件。我需要在代码隐藏中进行,因为所有代码都已经存在。

谢谢。

【问题讨论】:

    标签: asp.net vb.net gridview paging checkboxlist


    【解决方案1】:

    您的 gridview_databind 函数应该再次加载数据,就像您在 page_load 事件中所做的那样。因为你在gridview_PageIndexchange事件中设置了datagrid的pageIndex,当你绑定数据时它会知道要显示什么页面。

    private sub gridview_databind()
        get datatable from database
        gridview.datasource = datatable
        gridview.databind()
    End Sub
    

    【讨论】:

    • 感谢您的回复 Dave D,我真的做不到。我不认为你理解我的问题。用户使用复选框列表进行选择后,page_load 上有一个数据表和数据表更改。我尝试使用... Dim datatable as datatable = TryCast(gridview1.datasource, datatable) 获取当前数据表,但它始终没有返回任何内容。
    • 不幸的是,回发后您将无法获得 gridview1.datasource。
    • 我找到了一种将数据表放入会话状态的方法,但我认为这不是一个好方法。数据表非常大,整个数据表需要在页面更改时重新绑定。
    • 这里有一篇关于高效分页的好文章link。它基本上将分页移动到存储过程,因此您只取回所需的行。
    • 谢谢Dave D ...我会看一下..希望对您有帮助
    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多