2012-10-26 22 views
1

我正在开发一个网页,用户可以在其中过滤数据,然后将所选内容导出为pdf或excel。该网站正在使用ASP .NET C#。使用asp.net C#和jquery过滤数据集合

要过滤数据我已经创建了一个网页,其中包含一个带有框和下拉列的左栏,用户可以输入搜索条件,然后单击搜索按钮。这是很多网站包含的典型搜索/过滤功能。筛选数据后,使用asp listview显示选择内容。这个listview会生成一个表格。我实现了Dragtable,使用户能够更改此表中列的顺序,并且还允许用户选择要显示的列。

所以我的问题是,过滤器/搜索功能是解决后端使用ASP.NET C#,而列的选择和重新排列完成客户端使用jQuery。当用户现在点击“导出”按钮时,除了jQuery所做的过滤之外,我还想收集由asp控件完成的过滤器,并创建该文件。这个文件应该只包含使用columnManager选择的列,按照它们在使用拖动表进行更改后的顺序。

同时使用服务器端过滤器和客户端过滤器的最佳做法是什么?我也考虑过放弃所有的服务器端过滤,并只使用ajax.post()将所有JSON格式的过滤器发送到服务器。 我也想让用户在另一次保存当前的过滤器。

更新

我已经决定放弃在服务器端和使用AJAX(的getJSON更精确),以获得搜索结果。这样我就不会放弃使用jQuery/js完成的列的排序和排序,我会用post-back(当然可以使用cookies'n的东西)来完成。 我也将所有的逻辑放在一个地方,并且JSON对象可以很容易地包装/解包服务器端。不过谢谢你的回答!

+0

代码片段将非常可观。 –

回答

0

客户端和服务器端在同一个地方工作并不坏。 在世界上运行的所有优秀应用程序都将这些组合在一起。

但是,我们需要看到的方法。

如果你不想要任何回传,我会推荐使用Jquery。

如果您对往返行为正常,请继续使用服务器端和Ajax。

0

您的方法存在另一个问题:如果用户先对列进行排序并对其进行过滤,会发生什么情况?列的顺序被重置。

但是,通过jQuery UI可拖动,您可以触发ajax调用来通知服务器端代码有关更改。您可以绑定到停止事件的函数:​​

所以我会做到以下几点:当用户改变了列的顺序

  • 消防Ajax调用,但没有刷新数据
  • 当用户添加过滤器并刷新数据时触发阿贾克斯调用

服务器端代码始终保持最新状态,并在必要时呈现正确的输出。