我想问一个关于如何使用C#在ASP.net编码中进行分页的问题。
我尝试做的是,我想显示一些内容,有多列和多行。
在实际编码中,我有一个对象列表,比如说对象A
class A {
integer id;
string name;
string desc;
}
并希望将其显示在具有可分页功能的页面上。
我做谷歌搜索,ASP.net提供gridview和listview,但它们都需要一个数据源,这意味着该表直接绑定到数据库。
这不是我想要的,因为我的对象A列表来自其他地方,而不是来自我的数据库(例如,它是一个复合数据集,在运行时生成)
所以无论如何我仍然可以使用那些有益的组件,或者我必须自己完成所有这一切的分页???
THX
答案 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的TypeName
和SelectMethod
属性告诉它使用哪种方法以及在何处使用数据填充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逻辑等。