2009-09-23 3 views
3

나는 asp.net C# 웹 앱을 가지고있다. 그 안에는 gridview가 있습니다. gridview는 데이터베이스에서 검색 결과를 가져옵니다. 때로는 많은 결과가 있기 때문에 페이징을 사용하고 싶었습니다. 여기에 내가 시도 무엇 : 어떤 이유gridview_paging이 엉망이 됨

 protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     grdResults.PageIndex = e.NewPageIndex; 
     grdResults.DataBind(); 
    } 

, 내가 페이지 번호를 클릭하면, 그것은 (레코드 표시가 없습니다) 나에게 EmptyDataText을 보여줍니다. 어떤 코드가 작동합니까? 도와주세요.

답변

0

당신은 데이터 바인딩을 호출하기 전에 grdResults로 데이터 소스를 재 할당 할 필요가() 감사합니다.

+0

마크 업 또는로드 이벤트에서 이미 선언되지 않은 경우에만. ViewState를 사용할 수 없습니까? 그렇지 않다면 데이터 소스에 표시된 레코드 만 포함되어 있고 다른 페이지의 레코드는 생략하지 않는 한 다시 데이터베이스 바인딩해야한다고 생각하지 않습니다. –

+0

네 말이 맞아. 데이터를 리 바인드 할 필요가 없습니다. 하지만 지금은 페이지 번호를 두 번 클릭 할 때까지 페이지를 변경하지 않습니다 ... – zohair

1

NeedDataSource 이벤트에 데이터 소스를 할당 해보십시오.

건배.

0

그것은 absoloutly 작동이 코드를보십시오 :

protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 

    GV.PageIndex = e.NewPageIndex; 
    BindGrid(); 
} 

    public override void BindGrid() 
{ 
    query = new CommonQueries(); 
    GV.DataSource = query.getAllBooks(); 
    GV.DataBind(); 
} 

문제를 코드로 당신이 당신의 gridview에 데이터 소스를 재 할당 did'nt이다!

관련 문제