我有一个GridView,具有过滤和分页(10以时间),绑定到的LinqDataSource。 这一切工作。
但我怎么能得到在使用LinqDataSource检索到的所有数据的ID已经完成所有行的检索之后?
我有这样的方法,并且e.Result是含有清单该网格对象数据类型
protected void LinqDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e) // event fires after data retrieval complete.
{
List<int> ids = new List<int>();
if (e.TotalRowCount > 0)
{
for (int idx = 0; idx < e.TotalRowCount; idx++)
{
Foo foo = (Foo)(e.Result[idx]); // error cannot apply indexing to expression of type object
ids.Add(foo.Id);
}
}
}
我的错误是遍历一个对象,这可怎么办呢?
你可以这样做:
protected void LinqDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e) // event fires after data retrieval complete.
{
List<int> ids = new List<int>();
if (e.TotalRowCount > 0)
{
List<Foo> fooList = ((IEnumerable)e.Result).ToList();
for (int idx = 0; idx < fooList.Count; idx++)
{
Foo foo = fooList[idx];
ids.Add(foo.Id);
}
}
}
要么
protected void LinqDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e) // event fires after data retrieval complete.
{
List<int> ids = new List<int>();
if (e.TotalRowCount > 0)
{
foreach(Foo foo in (IEnumerable)e.Result)
{
ids.Add(foo.Id);
}
}
}
如果您选择的是筛选视图的结果,e.Result将是一个IEnumerable匿名类型的,所以获得的信息将最有可能需要使用一个IQueryable和视图模型对象。
e.Result
是一个object
,所以你需要将其转换为一个列表类型,能够应用索引:
Foo foo = ((List<Foo>)(e.Result))[idx];