通过数据源枚举

本文关键字:枚举 数据源 | 更新日期: 2023-09-27 18:02:03

我有一个中继器控件,它将在页面加载时绑定内容。

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

!!重要提示:为了简洁起见,代码已被缩小

Build<Model>将从数据库中构建一个数据的IEnumerable,该数据将返回给DataSource,我将其绑定,以便它在页面上可见。

在前端,我有一个按钮,可以触发通过DataSource进行搜索,以重新绑定过滤后的结果。

有可能做点什么吗:

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

是这样的吗?这样我就可以在使用过滤列表重新绑定之前循环浏览内容了吗?

通过数据源枚举

将数据源存储为稍后访问的字段可能更容易。

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();
   }
}

请记住,这是基于非常简短的代码片段的伪代码。

编辑:要使用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();
   }

这需要中继器。DataSource(Object的类型(,并尝试强制转换为您的List(或其他类型(。进行null检查,然后GetEnumerator((并过滤掉。