NHibernate пейджинг и привязка к Gridview - PullRequest
2 голосов
/ 20 марта 2009

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

public Ilist<Item> GetItems(int from, int number){ ... }

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

public int CountItems{ get{ ... } }

но я не нашел места, чтобы сообщить GV это значение.

Какая здесь стратегия? Нужно ли иметь ObjectDS? Я отказываюсь верить так!

Что я могу сделать для пейджинга?

Ответы [ 3 ]

1 голос
/ 22 июня 2011

NHibernate имеет собственный класс, который преобразует IQueryable в DataTable Вам необходимо создать ObjectDataSource и передать его из DAO в NHybernate. ObjectDataSource требует DataTable для выполнения подкачки, фильтрации, редактирования.

0 голосов
/ 06 апреля 2010

Я также столкнулся с той же проблемой, когда реализовывал разбиение на страницы в виде сетки ASP.NET с использованием NHibernate. Это разочаровывающее ограничение GridView, если вы реализуете свою собственную функцию подкачки.

В то время я видел только три варианта:

  1. создать отдельный пользовательский элемент управления, который реализует пользовательский функциональность навигации, которая взаимодействует с элементом управления GridView
  2. создать производный класс, который наследуется от элемента управления GridView и добавить пользовательские функции навигации
  3. использовать ObjectDataSource

Я пошел с базовой реализацией # 1, так как это было проще сделать, чем # 2, и гораздо предпочтительнее, чем с использованием # 3, который не соответствовал бы шаблону модель-представление-презентатор, который мы использовали в проекте ( а также усложнение юнит-тестирования).

0 голосов
/ 20 марта 2009

К сожалению, вам нужен Object DataSource или реализация пользовательского источника данных. Вот ссылка на документ MSDN, в котором упоминается http://msdn.microsoft.com/en-us/library/5aw1xfh3.aspx. Datagrid поддерживает то, что вы хотите, но MS не делает того же для GridView.

Полагаю, можно было бы создать некий фиктивный пользовательский источник данных, который бы раскрывал методы / события, которые вам необходимы для управления процессом вне его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...