对gridview(.net)的数据源中的项进行计数
我有一个GridView并将列表绑定到它:对gridview(.net)的数据源中的项进行计数,.net,gridview,count,datasource,.net,Gridview,Count,Datasource,我有一个GridView并将列表绑定到它: List<T> items = T.GetItems(); GridView.DataSource = items.OrderBy(x => x.SomeValue); GridView.DataBind(); Rows或GridView.DataKeys没有帮助,因为此时正在生成GridView。当然,我可以使用items.Count(),但我更喜欢直接访问底层数据源 更新 发布的解决方案没有我稍后包含的OrderBy语句。受保
List<T> items = T.GetItems();
GridView.DataSource = items.OrderBy(x => x.SomeValue);
GridView.DataBind();
Rows或GridView.DataKeys没有帮助,因为此时正在生成GridView。当然,我可以使用items.Count(),但我更喜欢直接访问底层数据源
更新
发布的解决方案没有我稍后包含的OrderBy语句。受保护的void GridView\u RowDataBound(对象发送方,GridViewRowEventArgs e)
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
var count = ((ICollection<T>)GridView.DataSource).Count;
}
{
var count=((ICollection)GridView.DataSource).count;
}
我想您可以通过执行以下操作来访问项目计数:
int count = (GridView1.DataSource as List<T>).Count;
int count=(GridView1.DataSource作为列表);
希望这有帮助
编辑1:
添加了使用的完整方法
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int count = (GridView1.DataSource as List<string>).Count;
}
受保护的无效GridView1\u行数据绑定(对象发送方,GridViewRowEventArgs e)
{
int count=(GridView1.DataSource作为列表);
}
包括我的更新后,可以使用
var count = ((IEnumerable<T>)GridView.DataSource).Count();
var count=((IEnumerable)GridView.DataSource.count();
否,我得到一个错误:“对象引用未设置为对象的实例”,这里,“GridView1”是我使用的网格的ID。在那里提供您的ID,“T”是您试图绑定的列表类型。请让我知道,如果这不工作,因为它是为我工作。它不工作。我已经改变了我的控制和类型的一切。你能显示你的全部代码吗?将立即退出。我收到一个错误(尝试翻译):“System.Linq.OrderedEnumerable2[T,System.String]类型的对象无法转换为”System.Collections.Generic.ICollection
1[T]”,那么您没有像您的问题中那样使用列表。如果您使用的是LinqSQL数据源,请尝试添加ToList()
在语句末尾。
var count = ((IEnumerable<T>)GridView.DataSource).Count();