2014-07-08 3 views
0

나는 listview와 두 개의 데이터 페이저를 가지고있다. 내 listview는 데이터가 임의로 정렬 된 데이터 소스에 연결됩니다. ORDER BY 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 

무엇이 없습니까?/더 좋은 방법이 있습니다. 그 순서는 반드시 무작위이어야하며 데이터 페이저가리스트 뷰와 분리되어 있어야합니다.

감사합니다.

답변

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 

또한, 목록보기

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 

그리고 거기 당신은 그것을 가지고이 사람에게 도움이 될 희망에 PagePropertiesChanging 이벤트를 추가해야합니다.