2009-10-21 5 views
0

C#, .NET 3.5를 사용하고 있습니다. 동적으로 바인딩 된 DataSource가있는 GridView 컨트롤이 있고 Page_Load 이벤트 처리기에서 PageSize를 동적으로 설정합니다. AllowPaging = true로 설정했습니다. GridView 페이징이 정상적으로 작동하지만 페이지가 처음로드 될 때 Page_Load의 페이지 크기 설정이 적용되지 않습니다. 처음 페이지가로드되면 설정 한 GridView.PageSize 속성과 관계없이 항상 10 개의 행이 표시됩니다 (5, 15 등). 첫 번째 시간 (페이지 다시 게시) 후에 페이지 크기가 적용되고 모든 것이 예상대로 작동합니다.첫 번째 페이지에서 GridView.PageSize가 기본값 10으로 설정됩니다.

페이지 크기는 appsettings 아래 web.Config 파일에서 얻은 마스터 페이지의 속성입니다.

그리드 뷰의 페이지 크기가 처음으로 적용되지 않는 이유가 확실하지 않습니다. Page_Load 이외의 다른 이벤트에서 페이지 크기를 설정해야합니까? 또한, 나는 그것의 포스트 백이라 할지라도 항상 그것을 설정하고있다. 내부 웹 서버를 사용하여 페이지를 실행 중입니다. 어떤 생각이 일어나고 있니?

뒤에 코드 (GridView1.AllowPaging = aspx 페이지에 참) :

protected void Page_Load(object sender, System.EventArgs e) 
    { 
         DataView dvMembers = GetMembers; 

         GridView1.DataSource = dvMembers; 
         GridView1.PageSize = Master.GridViewSize; 
    } 

마스터 페이지 속성 : 자녀 페이지의 PageLoad 이벤트의 PageLoad 이벤트 전에이라고

public int GridViewSize 
    { 
     get { return Convert.ToInt32 
       (ConfigurationManager.AppSettings ["memberDataGridPageSize"]); } 
    } 

답변

2

당신의 마스터 페이지. 따라서 마스터 페이지 PageLoad 이벤트에 Master.GridViewSize을 설정하면 두 번째 PostBack 때까지 설정되지 않습니다.

페이지 수명주기의 초기에 GridViewSize를로드 한 다음 세션에 저장하는 것이 좋습니다.

+0

Master.GridViewSize는 마스터 페이지의 속성이며 Page_Load 이벤트에서 설정되지 않습니다. Page_Load 이벤트 처리기에서 값을보기 위해 콘텐츠 페이지를 디버깅 할 때 이미 설정되어 있습니다. 그래서 나는 그게 문제라고 생각하지 않는다. 그리드 페이지 크기를 어떤 이벤트로 설정해야한다고 생각합니까? – Pritika

+0

처음으로 값을 설정하면 문제가되지 않습니다. PageSize를 하드 코딩하면 어떻게됩니까? –

+0

또한 GridView1.DataBind() 또는 Page.DataBind()를 호출하는 위치는 어디입니까? –

0

GridView의 페이징 정의에서 첫 번째 데이터 바인딩시 설정되지만 다시 게시가 발생하면 초 단위로 설정되지 않습니다. (기본적으로 페이징 없음) aspx 페이지에서 GridView의 페이징을 설정해야합니다.

<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..> 

은 또한 당신이 ASP.NET 3.5 프로젝트를 실행하는 경우의 GridView을 확장하여 DataPager 컨트롤을 사용할 수 있다는 것을 알고처럼 매트 Berseth는 here을 개발 한 예가보십시오.

+0

Page_load 이벤트 핸들러에서 포스트 백인지 여부에 관계없이 pagesize 및 데이터 소스를 설정합니다. 그래서 왜 처음부터 다시 포스트 백이 다른지 확실하지 않습니다. ASPX 코드 자체에 pagesize를 삽입 해 주신 것에 대해 감사드립니다.하지만 코드에서 페이지 크기를 설정할 때 현재 코드에서 무슨 일이 일어나는지 확인하고 싶습니다. – Pritika

0

페이지 크기를 설정 한 후 PageBind 메서드가 누락되었습니다. 그것과 그 모든 것을 잘 작동시키는 것을 추가하십시오. PageSize를 설정하기 전에 컨트롤을 바인딩하고 있었고 그 값이 첫 번째 시간 이후에 저장되고 처음부터 Postback에서 사용되었다고 추측합니다.

감사합니다. Jason Berkan이 지적했습니다.

+0

나중에이 질문을 검색하는 사람들이 쉽게 대답을 찾을 수 있도록이 대답을 수락하십시오. –

+0

해결책이있는 경우 대답을 수락해야합니다. – Myra