c# - 是否可以将 Page DataSource 绑定(bind)到通用列表?

标签 c# asp.net generics

我有一个方法可以将一组对象作为通用列表返回,然后我将其绑定(bind)到 Repeater。我想使用 PagedDataSource 类在转发器上实现分页,但我不确定这是否可行,因为它似乎不起作用。

我是否必须更改我的方法的返回类型,或者是否可以将 PagedDataSource 绑定(bind)到通用列表?

最佳答案

我刚刚修改了一些代码以使用通用列表并且似乎工作正常,希望这对您有所帮助:

请注意,可以使用或不使用页码来调用整个方法以自动设置页面,它还在调用 PagingPanel 的面板内部构建了一个分页控件。

在 PagedDataSource 实例 (dataSource) 上设置 DataSource 的行确实采用了 NewsItems 数组 (searchResults),我已将其更新为使用使用 NewItem 数组创建的列表。

void PopulateNewsItems (int? pageNo)
{
    var model = ModelFactory.GetNewsModel ();
    var searchResults = model.GetNewsItems ();

    var dataSource = new PagedDataSource ();

    // CHANGED THE ARRAY OF NEWSITEMS INTO A GENERIC LIST OF NEWSITEMS.
    dataSource.DataSource = new List<NewsItem> (searchResults);
    dataSource.AllowPaging = true;

    var pageSizeFromConfig = ConfigurationManager.AppSettings["NewsItemsPageCount"];
    var pageSize = 10;

    int.TryParse (pageSizeFromConfig, out pageSize);

    dataSource.PageSize = pageSize;
    dataSource.CurrentPageIndex = pageNo ?? 0;

    PagingPanel.Controls.Clear ();
    for (var i = 0; i < dataSource.PageCount; i++)
    {
        var linkButton = new LinkButton ();
        linkButton.CommandArgument = i.ToString ();
        linkButton.CommandName = "PageNo";
        linkButton.Command += NavigationCommand;
        linkButton.ID = string.Format ("PageNo{0}LinkButton", i);
        if (pageNo == i || (pageNo == null && i == 0))
        {
            linkButton.Enabled = false;
            linkButton.CssClass = "SelectedPageLink";
        }

        linkButton.Text = (i + 1).ToString ();

        PagingPanel.Controls.Add (linkButton);
        if (i < (dataSource.PageCount - 1))
            PagingPanel.Controls.Add (new LiteralControl ("|"));
    }

    NewsRepeater.DataSource = dataSource;
    NewsRepeater.DataBind ();
}

void NavigationCommand (object sender, CommandEventArgs e)
{
    PopulateNewsItems (int.Parse ((string)e.CommandArgument));
}

关于c# - 是否可以将 Page DataSource 绑定(bind)到通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/301425/

相关文章:

c# - 将 key 发送到 Windows 桌面

c# - 从 ASP.net 代码隐藏更改 javascript src 属性

c# - C# 中模板类型的必需属性

java - 使用 lift-json 根据 json 和元数据实例化一个类型

c# - 为什么在 C# 中将结构与 NULL 进行比较是合法的?

c# - EPPlus 和图形

c# - IDictionary<TKey, TValue> 的 LINQ?有没有我似乎找不到的 AddIf?

c# - 具有缓冲区和线程安全的 FIFO/QUEUE

c# - 如何使用 C# 检索 HTML5 数据-* 属性

java - android - 为两个列表包装器创建通用接口(interface)