2012-05-14 36 views
3

我看到一些商业应用程序支持与jqGrid的MVC(asp.net)的例子,我试图确定与Backbone.js客户端mvc使用jQgrid的最佳方法。jqGrid使用骨干与分页

我们目前正在使用一个Backbone视图,该视图保存jqgrid的精细表,以及骨干集合提供的较小表和“本地”数据类型。

为了支持分页& virtualscroll我希望骨干模型/集合支持从服务器和任何搜索/过滤选项获取数据,并将输出传递到视图和jqgrid以更新网格。

看起来jqGrid对像beforeRequest,loadBeforeSend这样的事件有一些挂钩,我可以挂钩并进行集合调用以创建ajax请求并返回json并更新集合(使用Addy的Backbone Paginator集合),但它似乎jqgrid仍然会做ajax调用,这似乎是不正确的控制视图而不是模型。

如果我使用自定义数据类型,当网格需要获取更多数据并让bb集合提供该函数并获取数据时,我可以捕获该条件。

自定义数据类型的最佳选择是否有更好的方法钩到骨干模型/集合到jqgrid?

+0

我只是想,如果这意味着 - 你会在最后做一个Ajax调用并获得结果。 BB会中断jqgrid的ajax调用并自己做,然后当结果回来时,你需要将它们从BB发送到jqGrid。把你的代码钩在jQgrid的beforesend和onComplete上,填充你的BB而不是BB获取结果并填充jqGrid。 –

+1

我建议你远离jqGrid,这是一场灾难。请检查SlickGrid或DataTables。 – Roman

回答

0

在骨干环境中,您需要将表直接绑定到集合,并使用适当的侦听器来更新数据,否则您要么依靠静态视图 - 这与您使用主干的原因相反 - - 或者你将花费无数个小时钩住回调来更新一个从来没有意义的网格。

我在一个Backbone环境中做了两次datatables.net,并且这两次尝试都是一团糟,因为我基本上是蛮横的 - 迫使数据表更新它自己的模型,这是过度的。同样,试图利用Datatable的服务器端选项几乎不在窗口,因为它与Ajax事务的Backbone系统冲突。

看看Backgrid,它是从底层构建而成的,可与Backbone一起使用。远远的,这是迄今为止我发现的最简单,最干净,开销最低的选项。