我们在工作中有一个关于如何处理网格中的数据的大讨论。
有些人更喜欢使用服务器端网格,它可以很容易地从服务器绑定并使用Ajax或不使用Ajax更新。有些人更喜欢只使用调用WebService的Javascript来填充Javascript/html网格。
从专业的角度来看,哪一个是最好的生产力,可测试性和可维护性?
我们正在使用WebForm . net 4.0和Jquery。
我肯定会说是JavaScript控件。
我只是认为,在这些事情上,微软、Telerik和所有其他的家伙已经表明他们远远不如开源社区(主要是基于jquery的解决方案)。
的另一个优点是客户端控件的种类要比服务器端多得多,因此您可以找到一个完全适合您的控件。如果你需要它做一些不开箱即用的事情,它是开源的——你可以自己实现它。我正在使用jqgrid,我对它很满意。
我和你的情况一样。最后,我选择了服务器端GridView,因为它很容易绑定数据。另一方面,每次刷新页面更新GridView都很烦人,所以我最终使用了AJAX更新面板的异步回发,以保持一切顺利。
Ajax将是答案,因为没有人喜欢过时的post back和完整的页面重新加载…ASP。. NET MVC帮助很大,因为它甚至没有旧的post - back和web表单页面生命周期的概念。
我们也在同样的情况下,仍然在考虑如果我们使用DevExpress MVCGridView扩展或Telerik一个,或者像ExtJs这样的完整javascript解决方案,它很酷,很快,但似乎不支持单元格合并,这对我们来说是一个重要的功能。
我们以前争论过这个问题。
关于asp网格的伟大之处在于,它们基本上是开箱即用的排序、分页等。而且你不需要处理javascript,这是我个人讨厌的。但它们更像是一种蛮力解决方案。我的意思是,从数据库中获取数据,重新绑定,重建页面,然后将其发送回来只是为了对列进行排序,这是非常低效的。
即使在网格周围有一个UpdatePanel,也可能有大量的数据要通过网络传递,并且大量的数据访问只是为了对表进行排序或分页。
Javascript更丑,但效率更高。首先,排序(可能还有分页)可以完全在客户机上快速处理,从而减少服务器负载。但是,你必须为此编写自定义功能,除非你想使用第三方JS表组件。
另一个选择是使用ASP网格,但是用javascript动态修改功能。这样,您的服务器端代码仍然可以利用简单的绑定和表生成。
我们决定按原样使用ASP网格。如果我们遇到性能问题,我们将改变我们的方法。但是,如果想要快速完成某些事情而又不那么令人头疼,那么您就必须使用内置控件