DataPager를 사용하여 Server Side 페이징을 시도하고 있습니다. 여기에 내 코드서버 측 페이징과 함께 DataPager를 사용하려면 어떻게해야합니까?
protected void Page_Load(object sender, EventArgs e)
{
ConfigureBlogPostListView();
}
private void ConfigureBlogPostListView()
{
int pageNum;
int.TryParse(Request.Params["page"], out pageNum);
int pageSize = 20;
PagedList<IFooBar> FooBars = FooService.GetPagedFooBars(
new PagingSettings(pageNum, pageSize));
ListViewPagedDataSource ds = new ListViewPagedDataSource();
ds.AllowServerPaging = true;
ds.DataSource = FooBars;
ds.MaximumRows = pageSize;
ds.StartRowIndex = pageNum;
//TotalCount is the total number of records in the entire set, not just those loaded.
ds.TotalRowCount = FooBars.TotalCount;
lvFooBars.DataSource = ds;
lvFooBars.DataBind();
pgrFooBars.PageSize = pageSize;
pgrFooBars.SetPageProperties(pageNum, FooBars.TotalCount, true);
}
PagedList RobConery의 유용한 게시물에 http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/에서 오는 뒤에
<asp:DataPager ID="pgrFooBars" PagedControlID="lvFooBars"
QueryStringField="page" runat="server" >
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
코드입니다.
문제는 DataPager가 총 레코드 수를 결정하기 위해 ListView의 Count 속성을 사용하는 것처럼 보입니다.이 경우 20입니다. 어쨌든, 총 레코드 수는 1,500 개가 아니라 총 레코드 수를 알아야합니다. . DataPager에는 TotalRowCount 속성이 있지만 읽기 전용입니다.
서버 측 페이징으로 DataPager 예제를 본 적이 없지만 서버 측 페이징을 수행 할 수 있다고 가정합니다. 그렇지 않으면 QueryStringField 특성이 무엇입니까?
여기서 4GuysFromRolla와 같은 방법론을 사용하여 사용자 지정 페이징 솔루션을 수행 할 수 있다는 것을 알고 있습니다 만, http://www.4guysfromrolla.com/articles/031506-1.aspx과 같은 방법이지만 사용자 지정 솔루션을 만들기 전에 DataPager를 사용하여 솔루션을 사용할 수 있는지 먼저 알고 싶습니다.
UPDATE 는 더 나는이 불가능하며 즉, 불행하게도있는 DataPager는 컨트롤이 작은 웹 사이트만을위한 의미라고 나는 결론에 간다 것을 더, 이것 좀 봐. 컨트롤이 올바르게 구축 되었다면 내가하고 싶은 일은 실제로 아주 간단해야합니다. 나는 같은 일을 수행하는 몇 가지 해킹을 찾고 있었어요
dpFooBars.TotalRowCountComputed = false;
dpFooBars.TotalRowCount = AnyNumberThatISoChoose;
말할 수 있도록하려면,하지만있는 DataPager의 TotalRowCount가가에 바인딩 된 데이터 소스의 항목의 실제 수에서 계산 된 것 같습니다 . Microsoft가 ListViewPagedDataSource() 클래스와 DataPager를 동시에 만들고 제대로 함께 작동시키지 못하는 것은 매우 이상한 것처럼 보입니다. 그러나이 문제가 발생한 것으로 보입니다.
업데이트 2 (AHA 순간은?) 그것은는 SelectCountMethod을 ObjectDataSource를를 사용하여 사용자 정의하여 닷넷 2.0부터 서버 측 페이징을 할 수 있었다 것 같다(). 내 요구에 맞게 ObjectDataSource를 사용자 정의 할 수 있어야한다고 생각합니다. 흠. 나는 주말 동안 떠날 것이기 때문에, 이것이 작동하는지 알기까지 며칠이 걸릴 것이다. 진정한 신자들을 지켜보십시오.
앱이 webform 앱 또는 Asp.Net MVC입니까? – Sharique