Я хочу создать свой собственный элемент управления пейджингом и использовать его для отображения списка пользователей в сетке.

Почему-то мне нужно получить только топ-10, например, пользователей для первой страницы, а затем 10-20 пользователей и так далее.

Я не могу найти встроенные методы в пространстве имен членства. Finduserbyname полезен, если я хочу найти всех пользователей, чье имя пользователя начинается, например, с A или чего-то еще.

Теперь мне нужен эффективный способ извлекать эти данные постранично.

Спасибо

1
Raha 15 Авг 2009 в 04:24

2 ответа

Когда я гуглил определение метода Membership.FindUsersByName, у него было больше параметров, которые можно использовать для определения пейджинга.

Вот подробности: http://msdn.microsoft.com/en-us /библиотека/fa5st8b2.aspx

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

Как видно из определения параметра, вы можете указать (int) pageIndex, а также (int) pageSize.

Итак, скажем, у вас есть в общей сложности 100 записей, которые квалифицировали пользователей с именем = «Джон», тогда, если вы хотите получить 1-ю страницу (всего 10 пользователей на каждой странице), вы можете установить (int) pageIndex в 1, а затем (int) pageSize в 10.

Впоследствии, если вы хотите получить вторую страницу, вы можете определить (int) pageIndex равным 2 и (int) pageSize равным 10.

Вы можете использовать параметр totalRecords (out), чтобы получить общее количество записей, чтобы вы могли использовать его для отображения в сетке пользовательского интерфейса.

2
hadi teo 15 Авг 2009 в 04:41

Я нашел статью, в которой показано, как использовать метод Membership.GetAllUsers(); функцию, а затем использовать ее в качестве источника данных

Итак, у вас есть gridview или сетка данных, и вы устанавливаете источник следующим образом:

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

И затем вы можете создать свой пейджинг оттуда (или используя встроенный пейджинг из gridview)

0
chad 15 Авг 2009 в 04:40
Или вы можете использовать объект PagedDataSource. Очень кстати.
 – 
Spencer Ruport
15 Авг 2009 в 04:44
Существует метод перегрузки, определяющий дополнительные параметры для пейджинга msdn.microsoft.com/en-us/library/…. Недостаток использования GetAllUsers() заключается в том, что разбиение по страницам выполняется на уровне приложения, а не на уровне базы данных. Пока вы запрашиваете все данные из базы данных, мы используем только их подмножество на уровне приложения. Будет лучше, если мы вызовем правильный параметр, чтобы API мог выполнять подкачку вплоть до уровня базы данных, чтобы сохранить ресурс.
 – 
hadi teo
15 Авг 2009 в 04:47