2008-11-12 3 views
1

페이징에 내장 된 데이터 저장소를 사용하는 웹 응용 프로그램이 있습니다. PagedResult 클래스는 총 페이지 수를 알려줍니다. 이렇게 내가 (내 ASP.NET의 GridView 바인딩 후) 그것을하고 싶습니다ASP.NET GridView의 PageCount 속성을 "할당"할 수 있습니까?

MyGridView.PageCount = thePageCount; 

그리고는의 GridView 마술 매김 링크를 구축해야 함은 일반적으로 사물 자체를하고 있었던 것입니다 것처럼.

문제는 "PageCount"는 읽기 전용 속성이므로 ... 어떻게이 작업을 간단하게 수행 할 수 있습니까?

답변

2

내장 된 페이징을 사용하기 위해 GridView는 데이터 소스와 상호 작용합니다. GridView에는 PageSize에 대한 settable 속성이 있습니다.

ObjectDataSource를 사용하는 경우 SelectMethod와 SelectCountMethod를 모두 구성합니다. 페이지 수 대신 레코드 수를 반환하도록 PagedResult 클래스를 수정하거나 페이지 수를 레코드 수 (PageCount * PageSize)로 변환하는 메서드에서 PagedResult 호출을 래핑 할 수 있습니다.

PagedResult 클래스가 웹 응용 프로그램을 지원하기 위해서만 존재하는 경우 일반적인 페이지 된 데이터 소스처럼 동작하도록 수정해야합니다.

0

GridView를 확장하고 PageResult 클래스의 값을 반환하기 위해 PageCount getter 메서드를 재정 의하여 고유 한 클래스를 만들 수 있습니다.

+0

나는의 GridView 반영했습니다, 그리고 실제로 그렇게 공개 "PAGECOUNT"필드를 오버라이드 (override) ... 개인 필드를 사용하고 :

일부 링크는 당신을 도울 수 있습니다 실제로는 작동하지 않습니다. 그래도 좋은 생각. –

0

ObjectDataSource 컨트롤을 사용하여 GridView에 바인딩하고 SelectCoutnMethod 속성에 대한 처리기를 설정합니다. ObjectDataSource 컨트롤과 인터페이스하는 데이터를 검색하는 클래스에 대해 작은 래퍼 개체를 작성해야 할 수 있습니다.

ObjectDataSource Web Server Control Overview
ObjectDataSource Class

0
 Dim myCount as Integer = 1 'this sets the page count to 1 
     While (oreader.Read()) 
      myCount += 1 'increments once for everytime a item is counted 
      'this sets an array for the items to go into 
      idFname = oreader.GetOrdinal("workCenter") 
      'this retrieves the values at those indices 
      fName = oreader.GetValue(idFname) 
      BulletedList1.Items.Add(fName) 
     End While 

    Catch ex As Exception 
     BulletedList1.Items.Add("No Workcenters Found") 
    Finally 
     oreader.Close() 
     oconn.Close() 
    End Try 
End If 
Me.insertItemForm.PagerSettings.PageButtonCount = myCount 'sets the page count to number of items in gridview or formview etc.