如何在没有数据源的情况下构建分页网格视图

时间:2009-10-27 11:39:15

标签: c# asp.net pagination

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

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

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

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

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

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

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

所以无论如何我仍然可以使用那些有益的组件,或者我必须自己完成所有这一切的分页???

THX

2 个答案:

答案 0 :(得分:6)

我的建议是使用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分页。

答案 1 :(得分:3)

DataSource属性也会接受List<>BindingList<>

在代码中使用它:

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

    GridView1.DataSource = data;
    GridView1.DataBind();
}

也许是一些IsPostback逻辑等。