2009-08-15 58 views
1

我想創建自己的分頁控件,並且想用它來列出網格中的用戶。獲取用戶名以'A'開頭的前10名用戶(ASP.NET)

不知何故,我只需要獲得前10名,例如第一頁的用戶,然後10-20用戶等等。

我無法在成員身份名稱空間中找到任何內置方法。如果我想查找所有用戶名以A開頭的用戶或其他用戶,Finduserbyname很有用。

現在我需要一種有效的方法來逐頁地提取這些數據。

謝謝

回答

0

我發現一個article演示瞭如何使用Membership.GetAllUsers();函數,然後使用它作爲數據源

所以,你有一個GridView或數據網格,並設置像這樣的源:

Users.DataSource = Membership.GetAllUsers(); 
Users.DataBind(); 

,然後你可以創建你的頁面從那裏(或使用內置的分頁從gridview的)

+0

或者您可以使用PagedDataSource對象。非常便利。 – 2009-08-15 00:44:29

+0

有一個重載方法,它爲尋呼目的定義了更多的參數http://msdn.microsoft.com/en-us/library/system.web.security.membership.findusersbyname.aspx。使用GetAllUsers()的弱點在於分頁是在應用程序級別執行的,而不是在數據庫級別執行。在查詢數據庫中的所有數據時,我們只在應用程序級別使用它的一個子集。如果我們調用正確的參數會更好,以便API可以執行分頁直到數據庫級別,以節省資源 – 2009-08-15 00:47:45

2

當我一派方法定義Membership.FindUsersByName,它具有可用於定義尋呼

這裏多個參數是細節:http://msdn.microsoft.com/en-us/library/fa5st8b2.aspx

public static MembershipUserCollection FindUsersByName(
string usernameToMatch, 
int pageIndex, 
int pageSize, 
out int totalRecords 
) 

從參數定義中可以看出,您可以提供(int)pageIndex以及(int)pageSize。

因此,假設您總共有100條記錄用firstname ='John'來限定用戶,那麼如果您想檢索第1頁(每個頁面總共有10個用戶),則可以設置然後將(int)pageIndex設置爲1,然後將(int)pageSize設置爲10.

隨後,如果要檢索第2頁,可以將(int)pageIndex定義爲2,將(int)pageSize定義爲10。

您可以利用totalRecords(out)參數來獲取多少記錄總數,以便您可以使用它在UI網格中顯示。