C# 将绑定到ObjectDataSource(c和实体框架)
我有一个从数据库表发布服务器绑定的GridView。publisher表中有22000多行,每个绑定事件都需要很长时间 我使用以下技术实现了自定义分页:C# 将绑定到ObjectDataSource(c和实体框架),c#,asp.net,entity-framework,data-binding,objectdatasource,C#,Asp.net,Entity Framework,Data Binding,Objectdatasource,我有一个从数据库表发布服务器绑定的GridView。publisher表中有22000多行,每个绑定事件都需要很长时间 我使用以下技术实现了自定义分页: public class PublisherDataSource { public List<Publisher> GetPublishers(int startIndex, int maxRows) { using (CA_Entities db = new CA_Entities ())
public class PublisherDataSource
{
public List<Publisher> GetPublishers(int startIndex, int maxRows)
{
using (CA_Entities db = new CA_Entities ())
{
return (from publisher in db.Publishers
select publisher)
.Where(p => p.isActive == true)
.OrderByDescending(p => p.CreatedDT)
.ThenBy(p => p.SiteURL)
.Skip(startIndex)
.Take(maxRows).ToList();
}
}
public int GetPublishersCount()
{
using (CA_Entities db = new CA_Entities ())
{
return db.Publishers.Count();
}
}
}
这段代码工作得非常出色,但在我最终绑定网格之前,我想处理来自db的结果
例如,删除某些记录,进一步对记录进行排序和筛选
因此,理想情况下,我想说:
List<Publisher> publishers = new List<Publisher>();
publishers.DataSource = ods;
// -data manipulation goes here
gridPublishers.DataSource = publishers;
gridPublishers.DataBind();
但当然,a不能被数据绑定,所以
有人能告诉我如何使用ObjectDataSource填充发布者列表吗?您尝试过使用该方法吗
ObjectDataSource.Select方法
通过调用方法从基础数据存储中检索数据
由SelectMethod属性和中的参数标识
SelectParameters集合
我认为在获取GetPublishers函数中的记录时,您必须进行数据操作——这样您仍然可以使用ObjectDataSource作为网格的数据源 或者,您可以尝试从自定义对象发布者而不是使用ObjectDataSource填充网格。然后,您必须为gridview分页gridview\u PageIndexChangingobject发送方实现函数,GridViewPageEventArgs应完成此任务 PageIndexchange实现的最简单示例与其说是正确的实现,不如说是一个技巧
protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
gv.DataBind();
}
尽管您处理的是大数据,并且提到了性能,但我还是建议您正确操作,只获取要显示的行。下面的内容可能会有所帮助
为什么要实现分页,GridView已经支持它了。标准的GridView分页仍然返回整个db表,并在服务器端进行分页计算。检索所有数据花费的时间太长,因此我只需要返回我们需要查看的数据。感谢Scheien-调用SelectMethod GetPublishers,但不传入参数[StartIndex]或[MaxRows],当'gridPublishers.DataSource=ods;gridPublishers.DataBind;'是这样的,出版商名单仍然是空的可悲的是,我认为你是对的-我将不得不做它的'老斯科尔';
List<Publisher> publishers = (List<Publisher>)ods.Select();
protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
gv.DataBind();
}