2010-06-14 2 views
0

ListView 내에 DataPager 컨트롤이 추가되었습니다. 데이터를 표시하는 동안 문제는 없습니다. 그러나 다음 페이지 버튼을 클릭하면 오류가 발생합니다.Listview DataPager에 ObjectDataSource 문제가 발생했습니다.

오류 : SelectMethod가 지정되어 있지 않으면 ObjectDataSource 'ObjectDataSource2'에서 Select 작업을 지원하지 않습니다.

protected void Page_Load(object sender, EventArgs e) 
     { 

     if(!IsPostBack)  
     FillGrid(); 
     } 

     private void FillGrid() 
     {   
      User user = new User(); 
      user = (User)HttpContext.Current.Session["login"]; 
      ObjectDataSource2.SelectMethod = "GetDetails"; 
      ObjectDataSource2.SelectParameters.Add("Customer_ID", DbType.Int32, Convert.ToString(user.Customer_ID)); 
      ObjectDataSource2.SelectParameters.Add("Selected_Period", DbType.String, Convert.ToString(Request.QueryString["period"])); 
      ObjectDataSource2.TypeName = "Online.Lib.Invoice"; 

     } 

CodeBeside :

<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource2"> 
     <LayoutTemplate>    
       <asp:DataPager ID="DataPager1" PagedControlID="ListView1" runat="server"> 
       <Fields> 
       <asp:NumericPagerField ButtonCount="10" />  
       <asp:NextPreviousPagerField FirstPageText="İlk" LastPageText="Son" NextPageText="İleri" PreviousPageText="Geri" /> 
       </Fields> 
       </asp:DataPager>             
      </LayoutTemplate> 
    </asp:ListView> 
+0

투명하게 보입니다 : ObjectDataSource2의 SelectMethod 속성을 설정하여 아무것도로드 할 수 있도록해야합니다. 그래도 작동하지 않으면 ObjectDataSource에 대한 ASP.NET 마크 업을 게시하십시오. – Koen

+0

@Koen FillGrid 메서드에서 SelectMethod 속성을 이미 정의했습니다. – Jack

+0

그런 식으로 작동해야하는지 모르겠다. 선언문에서 정의하는 것이 낫습니다. 페이지 범위에서 사용해야하는 다른 선택 메소드가있는 경우 다른 ObjectDataSources도 사용해야합니다. 또한 선언으로 할 수있는 한 많은 매개 변수를 설정하는 것이 좋습니다 ... – Koen

답변

0

좋아. FillGrid()가 제대로 작동하고 Page_Load 루틴을 통해 데이터를로드 할 수 있습니다. ListView의 "다음 페이지"를 클릭하면 포스트 백이 수행됩니다.

if(!IsPostBack)  
    FillGrid(); 
} 

.. FillGrid()가로드되어 있지 않음을 의미합니다 (ObjectDataSource에 Select 명령어가 있음). 위의 코드 조각에서 볼 수있는 것입니다. IsPostBack 처리에서 이러한 실수를 저지르는 것이 일반적입니다.