【问题标题】:Dynamically update Listview and Datapager contents continually based on incoming web service requests根据传入的 Web 服务请求动态更新 Listview 和 Datapager 内容
【发布时间】:2013-04-22 11:25:20
【问题描述】:

我目前有一个产品列表,它存储在我页面上的哈希表中。我的 Page_Load() 事件调用一个方法,该方法发送许多 Web 服务请求并生成一个产品列表。然后产品列表数据绑定到我的 ListView 并且一切正常。唯一的问题是我必须等待所有 Web 服务请求完成才能加载我的页面。

我的问题如下: 考虑 Web 服务调用将返回 300 个产品这一事实。 我将如何进行数据绑定和显示第一个服务请求(比如前 30 个项目),然后在请求完成时将其余的产品项目(其他 Web 服务请求)加载到 ListView 中。加载所有数据时,会有一个更新面板和动画。

我想这样做的原因是因为它减少了页面显示之前的等待时间,并且它在填充其余产品时为用户提供了一些可以查看的内容。

我将如何去做这样的事情?对于我的具体问题,我似乎无法在网上找到任何信息。

谢谢

【问题讨论】:

    标签: c# asp.net listview updatepanel dynamic-data


    【解决方案1】:

    您正在寻找“分页”。为了使用分页,您需要配置您的 List-/GridView 控件并指定分页属性。

    但是,您还需要告诉您的 Web 服务,您只想加载一页的项目。否则,您有一个分页,但仍在加载所有项目。

    假设您有一个包含所有客户的列表。

    您可能需要从

    扩展您当前的 Web 服务接口
    public IEnumerable<Customer> GetAllCustomers();
    

    public int GetAllCustomerCount();
    public IEnumerable<Customer> GetAllCustomers(int itemsPerPage, int page);
    
    1. 您需要知道查询的总计数(但实际上并不是全部加载)
    2. 您需要一种方法来仅获取当前页面所需的项目。

    【讨论】:

    • 我已经有分页了。我想加载并立即显示每个 Web 服务响应,并在 Web 服务调用仍在处理时提供更新面板动画。所以基本上加载30个项目并显示它们。加载另外 30 个项目并更新 ListView 和 DataPager 以包含来自 Web 服务调用的原始项目和新项目。
    • 所以你基本上可以等到另一个服务完成,然后你只需调整产品列表的数据源并在产品列表周围的 UpdatePanel 上手动调用 Update()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2017-04-02
    • 2013-07-06
    • 1970-01-01
    • 2023-03-04
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多