2015-07-10 2 views
-1

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

repeater.DataSource = Build<Model>(query); 
repeater.DataBind(); 

!! Важно: код был сокращен, ради краткости.

Build<Model> построит IEnumerable данных из базы данных, которые будут возвращены в DataSource, которые я связываю с тем, что видно на этой странице.

На переднем конце у меня есть кнопка для запуска поиска через DataSource для повторной обработки с фильтрованным результатом.

Можно ли сделать что-то:

IEnumerable<...> enumerator = repeater.DataSource.GetEnumerator(); 

Что-то вдоль этих линий? Таким образом, я могу перебирать содержимое, прежде чем переписываться с фильтрованным списком?

ответ

0

Возможно, было проще хранить источник данных в качестве поля для доступа позднее.

public class MyForm 
{ 
    private MyDataSourceType myDataSource = null; 

    private void SetDataModel() 
    { 
     myDataSource = Build<Model>(query); 
     repeater.DataSource = myDataSource 
     repeater.DataBind(); 
    } 

    private void FilterDataSet() 
    { 
     IEnumerable<MyDataType> enumerated = myDataSource.GetEnumerator(); 
     var filteredDataSource; // Filter Logic here 
     repeater.DataSource = filteredDataSource; 
     repeater.DataBind(); 
    } 
} 

Имейте в виду, что это псевдокоды, основанные на очень кратком фрагменте кода.

Edit: Для работы с DataSource, вы можете попробовать это:

private void FilterDataSet() 
    { 
     List<MyDataType> myDataSource = repeater.DataSource as List<MyDataType>; 
     // Null check here 
     IEnumerable<MyDataType> enumerated = myDataSource.GetEnumerator(); 
     var filteredDataSource; // Filter Logic here 
     repeater.DataSource = filteredDataSource; 
     repeater.DataBind(); 
    } 

Это займет repeater.DataSource (тип объекта) и попытаться бросить в свой список (или то, что он есть). Сделайте нулевую проверку, затем GetEnumerator() и отфильтруйте прочь.

+0

Я думал об этом, но думал, что будет чище доступ к источнику данных. – Greg

+0

Проверьте мои изменения, как это работает. –

Смежные вопросы