我有一个listview和两个数据寻呼机。我的listview连接到数据源,其数据是随机排序的。按NEWID订购()
可以想象,每次我选择一个页面或点击下一个/上一页时,所有数据都是随机的,这使得数据采集器毫无用处。
我想我可以在页面未发回时设置数据源,然后以编程方式将数据源设置为列表视图,但现在在选择页面或单击下一个/上一个按钮时,页面根本不会改变..
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
我缺少什么/是否有更好的方法来做到这一点。订单必须是随机的,我必须将数据寻呼机与列表视图分开。
谢谢!
答案 0 :(得分:0)
获取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事件添加到listview
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
你有它,希望这对某人有帮助。