【问题标题】:how to build a paging gridview without a datasource如何在没有数据源的情况下构建分页网格视图
【发布时间】:2010-12-10 10:57:27
【问题描述】:

我想问一个问题,关于如何使用 C# 在 ASP.net 编码中进行分页。

我想做的是,我想显示一些内容,有多列和多行。

在实际编码中,我有一个对象列表,比如说对象 A

class A {
   integer id;
   string name;
   string desc;
}

并希望将其显示在具有可分页功能的页面上。

我做谷歌搜索,ASP.net 提供gridview 和listview,但它们都需要数据源,这意味着表直接绑定到数据库。

这不是我想要的,因为我的对象 A 列表来自其他地方,而不是来自我的数据库(例如,它是一组复合数据,在运行时生成)

所以无论如何我仍然可以使用那些好处组件,或者我必须自己做这一切来进行分页???

谢谢

【问题讨论】:

    标签: c# asp.net pagination


    【解决方案1】:

    DataSource 属性还将接受 List<>BindingList<>

    要在代码中使用它:

    protected void Page_Load(object sender, EventArgs e)
    {
        var data = new List<Sample>();
        data.Add (...);
    
        GridView1.DataSource = data;
        GridView1.DataBind();
    }
    

    也许还有一些 IsPostback 逻辑等。

    【讨论】:

    • 更准确地说,它接受任何 IEnumerable。取决于它检测到的内容(它会进行一些类型的嗅探,以启用/禁用功能)。对于 IEnumerable,它不会进行分页,因为它现在不会计算元素总数等。
    【解决方案2】:

    我的建议是使用 GridView,您可以通过它使用 ObjectDataSource,它可以从您指定的类方法中获取其基础数据。所以类方法可能是(按照您的代码示例):

    public static List<A> GetAllAs()
    {
        return myAs;
    }
    

    你的 aspx 页面将包含

    <asp:ObjectDataSource ID="MyODS" runat="server" TypeName="Namespace.Classname" SelectMethod="GetAllAs" />
    
    <asp:GridView ID="grdMyGridView" runat="server" DataSourceID="MyODS" AllowPaging="True" ... >
    

    ObjectDataSource 的TypeNameSelectMethod 属性告诉它使用哪种方法以及在何处使用数据填充ODS。 AllowPaging="True" 让您自动在 GridView 上分页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      相关资源
      最近更新 更多