对象的泛型列表,通过 HTML 文本编写器类传递以输出 html.现在尝试实现分页

本文关键字:html 输出 分页 实现 列表 泛型 通过 文本编写器 HTML 对象 | 更新日期: 2023-09-27 18:32:59

我有一个从存储过程中获取的对象列表。然后,我获取此列表,通过我创建的方法将其包装在HTML中,然后将其输出到Web表单中。

我希望为此列表创建分页。我已经将列表存储在一个会话中,并且有两个按钮(下一个和上一个),我正在使用 LINQ 跳过并在每次单击按钮时形成列表。

按钮点击

protected void lnkNext_Click(object sender, EventArgs e)
{
    ListOfAdvertAndUsers = (List<Advert_User>)Session["list"];
    var list = from item in ListOfAdvertAndUsers select item;
    var pgNo = 1;
    var pgRec = 6;
    list = list.Skip(pgRec * pgNo).Take(pgRec).ToList();
    ListOfAdvertAndUsers = list.ToList();
    PopulateData(ListOfAdvertAndUsers);
}

对象的泛型列表,通过 HTML 文本编写器类传递以输出 html.现在尝试实现分页

我没有足够的代表发表评论,所以我只会发布我的评论作为答案。

我假设您使用的是 Asp.Net WebForms,那么您如何输出最终的html,Response.Write或在文字上设置文本?

但是,如果您使用的是WebForms,那么使用某些内置控件不是更容易吗?我不完全知道您的数据是什么样子的,但也许 GridView 将是一个很好的解决方案,因为它内置了对分页的支持。以下是 MS 关于如何使用它的示例: http://www.asp.net/web-forms/overview/presenting-and-managing-data/model-binding/sorting-paging-and-filtering-data <</p>

div class="answers">

不是直接答案,但您正在覆盖查询和列表,它们似乎不必要地卷积了代码。 您的方法可以简化为:

protected void lnkNext_Click(object sender, EventArgs e)
{
    ListOfAdvertAndUsers = (List<Advert_User>)Session["list"];
    var pgNo = 1;  // don't you need to increment the page number somewhere?
    var pgRec = 6; // should this be defined somewhere other than this method?
    var page = ListOfAdvertAndUsers.Skip(pgRec * pgNo).Take(pgRec);
    PopulateData(page);
}

也许这将帮助您确定真正的问题是什么......