我有一个 Repeater Control ,它将绑定页面加载的内容。
repeater.DataSource = Build<Model>(query);
repeater.DataBind();
!!重要提示:为简洁起见,代码已缩小。
Build<Model>
将从数据库中构建IEnumerable
个数据,这些数据将返回到DataSource
,我将其绑定,以便在页面上显示。
在前端,我有一个按钮,可以通过DataSource
触发搜索,并使用过滤后的结果进行重新绑定。
是否可以做某事:
IEnumerable<...> enumerator = repeater.DataSource.GetEnumerator();
这些方面的东西?这样我可以在使用过滤列表重新绑定之前循环遍历内容吗?
答案 0 :(得分: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();
}
}
请记住,这是基于您非常简短的代码段的伪代码。
编辑: 要使用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(Object的类型)并尝试强制转换为List(或其他任何东西)。执行空检查,然后GetEnumerator()并过滤掉。