C# 将绑定到ObjectDataSource(c和实体框架)

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 ())

我有一个从数据库表发布服务器绑定的GridView。publisher表中有22000多行,每个绑定事件都需要很长时间

我使用以下技术实现了自定义分页:

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();
  }