【问题标题】:Programmatically databind listview while using datapager使用 datapager 时以编程方式绑定列表视图
【发布时间】:2014-07-08 17:30:22
【问题描述】:

我有一个列表视图和两个数据寻呼机。我的列表视图连接到数据随机排序的数据源。按 NEWID() 排序

您可以想象,每次我选择一个页面或单击下一页/上一页时,所有数据都是随机的,这使得数据分页器非常无用。

我认为当页面未返回时,我可以设置数据源,然后将数据源设置为listView,但是现在选择页面或单击下一个/prev按钮时,该页面完全不会更改。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then

        Dim dv As DataView = sdsMembres.Select(DataSourceSelectArguments.Empty)

        lvListMembres.DataSource = dv
        lvListMembres.DataBind()

        DataPager2.PagedControlID = "lvListMembres"
        DataPager3.PagedControlID = "lvListMembres"

        DataPager2.DataBind()
        DataPager3.DataBind()

    End If
End Sub

我错过了什么/有没有更好的方法来做到这一点。顺序必须是随机的,并且我必须将数据寻呼机与列表视图分开。

谢谢!

【问题讨论】:

    标签: asp.net vb.net listview datasource datapager


    【解决方案1】:

    将 If 语句之间的代码放在一个单独的函数中。

    添加一种存储数据的方法,在这种特殊情况下,我会将其作为 DataTable 存储在会话中。

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            ' Clear datatable from session
            Session("CourtierList_dt") = Nothing
            ' Set datasource to listview and save in a session variable
            SetCourtierList()
        End If
    End Sub
    
    
    Protected Sub SetCourtierList()
        Dim dt As DataTable
        If Session("CourtierList_dt") Is Nothing Then
            Dim dv As DataView = sdsMembres.Select(DataSourceSelectArguments.Empty)
            Session("CourtierList_dt") = dv.ToTable
        End If
    
        dt = Session("CourtierList_dt")
    
        lvListMembres.DataSource = dt
        lvListMembres.DataBind()
    
        DataPager2.PagedControlID = "lvListMembres"
        DataPager3.PagedControlID = "lvListMembres"
    
        DataPager2.DataBind()
        DataPager3.DataBind()
    End Sub
    

    另外,请确保将 PagePropertiesChanging 事件添加到列表视图中

    Protected Sub lvListMembres_PagePropertiesChanging(sender As Object, e As System.Web.UI.WebControls.PagePropertiesChangingEventArgs) Handles lvListMembres.PagePropertiesChanging
        DataPager2.SetPageProperties(e.StartRowIndex, e.MaximumRows, False)
        DataPager3.SetPageProperties(e.StartRowIndex, e.MaximumRows, False)
        SetCourtierList()
    End Sub
    

    你有它,希望这对某人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      相关资源
      最近更新 更多