通过数据源枚举
本文关键字:枚举 数据源 | 更新日期: 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((并过滤掉。