代码之家  ›  专栏  ›  技术社区  ›  Simon Dugré Metin Atalay

对象数据源和网格视图:排序、分页、筛选

  •  4
  • Simon Dugré Metin Atalay  · 技术社区  · 17 年前

    我正在使用EntityFramework1.0,并尝试向GridView提供一个可以访问我的外观的ObjectDatasource。问题是,它似乎特别困难,而且还没有看到任何真正的事情做我想它在互联网上做的。

    对于那些知道使用ObjectDatasource的GridView的人来说,它不能自动排序,所以必须手动排序。还不错。在这里,它变成了一个噩梦,当我们向GridView的数据源添加分页和筛选设置时。

    在网上搜索了好几个小时后,我在问你们,伙计们,如果有人知道一个能解释我如何混合的链接 分页 , 分选 过滤 对于GridView和ObjectDatasource!

    事先谢谢你,对不起我的英语。

    4 回复  |  直到 12 年前
        1
  •  5
  •   PeterFromCologne    16 年前

    你可能不再感兴趣了,但我想我还是会发表一个答案:

    我使用的是Linq2SQL和ObjectDatasource,它可以很好地进行分页和排序。

    我实现了一个用作ObjectDatasource的类。它有一个select和count方法调用我的业务层 LIQ2SQL 从数据库中检索数据的查询应与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>
    

    select和count方法使用LINQ查询从数据库中检索数据。我使用 SKIP(),() 命令字节() 方法。以便orderby接受我使用的字符串排序表达式 DynamicLinq 没有太多的代码,数据绑定、分页和排序都是自动工作的。

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

        2
  •  1
  •   Simon Dugré Metin Atalay    17 年前

    最后!经过两天的搜索,终于找到了另一个选择!看看这个!

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

        3
  •  1
  •   belacqua    15 年前

    这个解释很好也很简单: GridView ObjectDataSource LINQ Paging And Sorting .

        4
  •  0
  •   Aerik    12 年前

    我知道这是一个古老的问题,但我是如何处理这个问题的。将ObjectDatasource添加到我的ASPX页:

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

    请注意,它缺少类型?我在代码中设置,在我的页面上加载

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

    然后,我在同一个页面上(在同一个类中)使用静态方法来更新GridView:

    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
    }