使用 asp.net C# 和 jquery 过滤数据集合
Posted
技术标签:
【中文标题】使用 asp.net C# 和 jquery 过滤数据集合【英文标题】:Using asp.net C# and jquery to filter a collection of data 【发布时间】:2012-10-16 14:26:06 【问题描述】:我正在开发一个网页,用户可以在其中过滤数据,然后将选择导出为 pdf 或 excel。该网站使用 ASP .NET C#。
为了过滤数据,我创建了一个网页,其中包含一个带有框和下拉列表的左列,用户可以输入搜索条件,然后单击搜索按钮。这是许多网站包含的典型搜索/过滤功能。过滤数据后,使用 asp 列表视图显示选择。此列表视图生成一个表。我实现了Dragtable,使用户能够更改此表中列的顺序,还实现了columnManager,使用户能够选择要显示的列。
所以我的问题是过滤/搜索功能是使用 asp .net C# 在后端解决的,而列的选择和重新排列是使用 jQuery 在客户端完成的。当用户现在单击“导出”按钮时,除了由 jQuery 完成的过滤器之外,我还想收集由 asp 控件完成的过滤器,并创建文件。此文件应仅包含使用 columnManager 选择的列,其顺序与使用 dragtable 更改后的顺序相同。
同时使用服务器端过滤器和客户端过滤器的最佳做法是什么?我还考虑过放弃所有服务器端过滤并仅使用 ajax.post() 将所有 JSON 格式的过滤器发送到服务器。 我还想让用户能够再次保存他们当前的过滤器。
更新
我决定放弃服务器端并使用 ajax(更准确地说是 getJSON)来获取搜索结果。这样我就不会失去使用 jQuery/js 完成的列的排序和排序,而我会使用回发(当然可以使用 cookies'n 的东西)。 我还将所有逻辑保存在一个地方,并且 JSON 对象可以轻松地在服务器端进行包装/解包。不过,感谢您的回答!
【问题讨论】:
代码 sn-p 将非常受欢迎。 【参考方案1】:让客户端和服务器端在同一个地方工作一点也不坏。 世界上所有运行良好的应用程序都有这些组合。
但是我们需要看看方法。
如果您不想要任何回发,我建议您使用 Jquery。
如果您可以接受往返,请继续使用服务器端和 Ajax。
【讨论】:
【参考方案2】:您的方法还有一个问题:如果用户先对列排序然后过滤它会发生什么?列的顺序被重置。
但是,使用可拖动的 jquery ui,您可以触发 ajax 调用来通知服务器端代码有关更改的信息。您可以将函数绑定到停止事件:http://api.jqueryui.com/draggable/#event-stop
所以我会做以下事情:
当用户更改列的顺序但不刷新数据时触发 ajax 调用 当用户添加过滤器并刷新数据时触发 ajax 调用服务器端代码始终是最新的,并在必要时呈现正确的输出。
【讨论】:
以上是关于使用 asp.net C# 和 jquery 过滤数据集合的主要内容,如果未能解决你的问题,请参考以下文章
jquery datepicker和asp.net c#空值
使用 C# 在 ASP.NET MVC 中使用多个参数过滤数据
将数据传递到处理程序的 Jquery ajax 不起作用(Asp.net、C#、Jquery)
如何使用 JQuery c# 在嵌套网格视图 ASP.net 中使用日期时间选择器