2010-06-14 108 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的0123標記... – Koen 2010-06-14 12:39:20

+0

@Koen已經在FillGrid方法中定義了SelectMethod屬性。 – Jack 2010-06-14 12:50:20

+0

不知道這是否應該如此。在聲明中定義它更好。如果您在頁面範圍中使用不同的選擇方法,則也應該使用不同的ObjectDataSource。你可以通過聲明來設置許多參數,這也是最好的... – Koen 2010-06-14 13:07:23

回答

0

確定。您的FillGrid()運行良好,您可以通過Page_Load例程加載它的數據。當你點擊ListView的「Next page」時,你正在做PostBack。

if(!IsPostBack)  
    FillGrid(); 
} 

..這意味着FillGrid()沒有加載(這是ObjectDataSource有它的Select指令的地方)。這是我在上面的代碼片段中看到的。在IsPostBack處理中犯這樣的錯誤非常普遍。