2009-08-14 121 views
4

即时通讯使用实体框架1.0,并尝试用可访问我的外观的objectdatasource提供Gridview。问题是,它似乎特别困难,并没有看到任何真正做我想要它在互联网上做的事情。Objectdatasource和Gridview:排序,分页,过滤

对于那些知道,一个gridview与objectdatasource饲料,它不能自动排序然后你必须手动。它没有那么坏。它变成了一场噩梦,当我们将分页和过滤器设置添加到gridview的数据源时。

很多时间在互联网上搜索后,我在问你,伙计们,如果每个人都知道可以解释我如何混合Pagging排序过滤一个GridView和一个ObjectDataSource的链接!

在此先感谢和抱歉我的英语。

回答

1

FINALY!经过2天的搜索,finaly找到了另一种选择!看看这个!

http://www.unboxedsolutions.com/sean/archive/2005/12/28/818.aspx

+0

该链接没有:我

myDataSource.TypeName = this.GetType().AssemblyQualifiedName; 

然后我使用的是同一个页面上的静态方法(在同一个类)来更新gridview的设置,在代码中,在我的Page_Load在工作,在忙。耻辱因为我想知道如何做到这一点。你有关于这个西蒙的任何信息吗?欢呼 – Andez 2012-08-10 10:45:42

5

它可能不再是你的兴趣,但我想我还是后一个答案:

我使用LINQ2SQL和ObjectDataSource控件和它分页和排序非常好。

我实现了一个用作ObjectDataSource的类。它有一个Select和Count方法调用我的业务层,它使用Linq2SQL查询从数据库检索数据,应该与EntityFramework类似。 select方法自动获取第一项索引,页面大小和排序表达式作为参数。

public List<EntityClass> Select(int startIndex, int pageSize, string sortBy) {} 
public int Count() {} 

在ASPX,数据源被构造成这样的:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
    SelectMethod="Select" EnablePaging="true" 
    StartRowIndexParameterName="startIndex" 
    MaximumRowsParameterName="pageSize" 
    SortParameterName="sortBy" SelectCountMethod="Count" > 
</asp:ObjectDataSource> 

的选择和计数方法使用LINQ查询来检索从DB中的数据。我使用Skip(),Take()Orderby()方法。为了OrderBy接受一个字符串排序表达式,我使用DynamicLinq没有太多的代码,数据绑定,分页和排序自动工作。

如果您有兴趣,我可以发布我的代码的更多细节。

+0

是的,在这个方向我们决定去。但是,我有兴趣知道是否有办法像SQL数据源那样拥有我们不需要做的工作。我不知道该怎么说,但是我的“头脑程序员”发现它在Studio 2010 LLBL Gen中的实体4是非常强大的,排序,分页和查询效率更高,并且花费很少的重新安装,它包括强大的排序/分页功能在返回所有数据之前与数据库进行交互的方法。但是,谢谢彼得!也许我应该展示一些查询,当我们要完全实施! – 2010-06-14 12:30:56

0

我知道这是一个古老的问题,但以下是我如何处理这个问题。添加一个ObjectDataSource到我的aspx页面:

<asp:ObjectDataSource ID="myDataSource" runat="server" 
    SelectMethod="GetSearchResults" EnablePaging="true" 
    StartRowIndexParameterName="startIndex" 
    MaximumRowsParameterName="pageSize" 
    SortParameterName="sortBy" SelectCountMethod="GetSearchCount" > 
</asp:ObjectDataSource> 

请注意,它缺少一个Type?

public static int GetSearchCount() 
{ 
    return _RowCount;//set elsewhere in code - this is the total number of rows for the query 
} 

public static DataTable GetSearchResults(string sortBy, int pageSize, int startIndex) 
{ 
    //Code to dynamically generate SQL statements based on supplied parameters 
    //then return a datatable containing only the data to be shown in the gridview 
}