У меня есть элемент управления ListView, который я использовал для заполнения с помощью элемента управления ASP ObjectDataSource.Это работало нормально.
Однако я хотел реализовать фильтр, который отображал элементы в ListView, который начинался с буквы A, B, C и т. Д. Для этого я удалил элемент управления ObjectDataSource и заменил его нанекоторый код в событии Page_Load, позволяющий мне лучше контролировать то, что я передавал в качестве источника данных, аналогично следующему:
System.Diagnostics.Debug.Print("{0:HH:mm:ss} : GET DATA", DateTime.Now);
List<MyItem> items = GetItems("A"); // Gets a list of items with a description that
// begins with A
MyListView.Datasource = items;
System.Diagnostics.Debug.Print("{0:HH:mm:ss} : BIND DATA", DateTime.Now);
MyListView.DataBind();
System.Diagnostics.Debug.Print("{0:HH:mm:ss} : DONE", DateTime.Now);
Вывод (время соответствует фактическим результатам):
16:00:00 : GET DATA
16:00:00 : BIND DATA
16:00:20 : DONE
После этого загрузка страницы в браузере занимает около 20 секунд, а не около 1 секунды, когда я использовал ObjectDataSource.
Для загрузки данных в строки моего ListView я использую стандартную<%# Eval("Description") %>
метод.После некоторых поисков в SO и google некоторые люди , похоже, говорят, что Eval
неэффективно.
Почему ручное связывание в событии Page_Load все замедляет?Это потому, что Eval неэффективен?Как я могу ускорить его и как правильно это сделать?