我想允许asp.net中的20k数据记录进行过滤、排序、分页和编辑。哪个是最好的?
嗯,如前所述,我们无法一次加载 20k 条记录 - 这对于一次使用来说数据太多了。
那么,您可以添加分页并在网格/表格之类的视图中显示数据屏幕吗?是的,这很容易。
您可以在网格显示中添加排序(例如向上/向下排序)吗?是的,这需要一点代码,但这可以很容易完成。
但是允许用户在任何列上进行过滤?嗯,这需要做很多工作。所以你当然可以实现前两个目标 - 非常简单。
但没有任何内置的过滤系统+一组控件可以为您实现过滤选项。我真的希望有。您可以考虑一些第 3 方控件 - 它们相当昂贵,但它们看起来确实非常漂亮。所以,假设来自 Telerick 的这个网格是您正在寻找的一个很好的例子:
所以上面有分页、排序、过滤器。
演示在这里: https://demos.telerik.com/aspnet-ajax/grid/examples/overview/defaultcs.aspx
我真的不知道为什么这么多年之后,基础.net包不包含网格扩展器或列表视图控件,这些控件功能如此匮乏,以至于每个人每天都必须出去重新发明世界。
但是您必须添加数据寻呼机并且开箱即用,寻呼机的默认格式看起来不太好。一旦你花了一两个小时,你就可以获得一个漂亮的格式化数据分页器(但不应该做太多工作来获得开箱即用的漂亮外观和感觉 - 它不应该如此)。
所以说这里是一个列表视图(我使用了向导 - 然后删除了 99% 的标记,并使用此标记:
<asp:ListView ID="ListView1" runat="server" DataKeyNames="ID">
<ItemTemplate>
<tr style="">
<td><asp:label ID="FirstName" runat="server" Text='<%# Eval("FirstName") %>' /></td>
<td><asp:label ID="LastName" runat="server" Text='<%# Eval("LastName") %>' /></td>
<td><asp:label ID="HotelName" runat="server" Text='<%# Eval("HotelName") %>' /></td>
<td><asp:label ID="City" runat="server" Text='<%# Eval("City") %>' /></td>
<td><asp:CheckBox ID="Active" runat="server" Checked='<%# Eval("Active") %>' /></td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table id="itemPlaceholderContainer" runat="server" border="0" style="">
<tr runat="server" style="">
<th runat="server">FirstName</th>
<th runat="server">LastName</th>
<th runat="server">HotelName</th>
<th runat="server">City</th>
<th runat="server">Active</th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
</asp:ListView>
它看起来像这样:
所以列表视图是呈现数据的好方法。
但是,要获得漂亮的布局、漂亮的过滤、看起来还算不错的数据分页器吗?这需要大量的工作。开箱即用的 ASP.NET 控件曾经可能是 ASP.NET 的最佳功能
上面的页面是我在写这篇文章的时间内创建的。看起来不错 - 但“不错”是 5 或 10 年前的事了。
开箱即用的新数据控件应该像第一个网格一样 - 恕我直言,为了获得漂亮的网格而付出的努力现在还不是那么好。
所以,我会考虑使用第 3 方网格控件,否则你必须学习相当多的 css 才能获得像 Excel 一样漂亮的显示。
这是可能的。我更喜欢简单的 - gridview。
但是,对于真正漂亮的布局 - 额外的选项 - 使用列表视图 - 它需要更多的标记,但具有近乎无限的灵活性。