【问题标题】:asp.net ListView sort by columnasp.net ListView 按列排序
【发布时间】:2013-05-10 07:29:37
【问题描述】:

我有一个绑定到数据源的列表视图。 如何启用按列排序?

因此,当按升序排序后单击列标题时,再次单击它按降序排序。

向导中是否有任何可以设置的内容或全部需要以编程方式完成?

【问题讨论】:

  • 通常这要么在代码隐藏中完成,要么在数据库中完成。你能提供你正在使用的框架版本吗?这将有助于提供最佳解决方案,尤其是如果您可以使用 LINQ。
  • Google 找到了这篇文章,在列表中排名第一。 support.microsoft.com/kb/319401 提供完整源代码。
  • 如何解决上述问题以适用于数据绑定源?我不断收到数据源“reportObjectDataSource”不支持使用 IEnumerable 数据进行排序。只有 DataView、DataTable 和 DataSet 支持自动排序。

标签: c# asp.net listview sorting


【解决方案1】:

如果您使用的是数据源控件,则可以在 ListView 控件中实现排序,而无需编写任何代码 - 所有这些都由 ListView 及其数据源控件自动处理。当然,在更高级的场景中,我们可能需要手动或以编程方式对数据进行排序。

在以下示例中,ListView 将按 ProductName 和 UnitPrice 排序。只需在 ListView 的 LayoutTemplate 中添加两个具有适当 CommandName 和 CommandArgument 属性值的 LinkBut​​ton。

    <asp:ListView ID="ProductList" runat="server" DataSourceID="ProductDataSource">
   <LayoutTemplate>
      <h3>Product Listing</h3>
       <asp:LinkButton runat="server" ID="SortByName" CommandName="Sort"
                     CommandArgument="ProductName">Sort by Name</asp:LinkButton>
      | <asp:LinkButton runat="server" ID="SortByPrice" CommandName="Sort"
                     CommandArgument="UnitPrice">Sort by Price</asp:LinkButton>

      <blockquote>
         <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
      </blockquote>
   </LayoutTemplate>

   ...
</asp:ListView>

如果用户连续两次点击“按价格排序”链接,第一次产品将按升序排序(从最便宜到最贵),但第二次排序顺序会颠倒。

【讨论】:

  • 请在您的答案中插入链接中的重要部分。
【解决方案2】:

这取决于您使用的数据源。如果数据源允许排序,则可以按照此处http://msdn.microsoft.com/en-us/library/sa88ktts.aspx 中描述的方式进行设置。否则,您必须以编程方式处理自己的排序。通常这比自动方法更容易。

【讨论】:

  • 我得到的 ObjectDataSource 不允许对 IEnumerable 进行排序。有没有办法配置数据源以允许它?
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
相关资源
最近更新 更多