2013-01-23 36 views
1

我有这样的代码,它工作正常,如果在IgGrid control细胞正在编辑:Infragistics的网格滚动发行

var verticalContainer = $("#BookLabor_scrollContainer"); 
var topPos = verticalContainer.scrollTop(); 
$("#BookLabor").igGrid("option", "dataSource", blankLaborDS); 
$('#BookLabor').igGrid('dataBind'); 
verticalContainer.scrollTop(topPos); 

然而,当我使用IgDialog,我有弹开上有一个网格单元按钮单击事件,这不是滚动回行正在编辑:

var verticalContainer = $("#BookLabor_scrollContainer"); 
var topPos = verticalContainer.scrollTop(); 
$("#BookLabor").igGrid("option", "dataSource", blankLaborDS); 
$('#BookLabor').igGrid('dataBind'); 
verticalContainer.scrollTop(topPos); 

没有为IgGrid一个虚拟滚动的方法,但在在线文档没有详细说明如何使用它。

有什么技巧,提示,所有你的提示Infragistics专家在那里?

+0

我在第二部分忘了一行代码。就在verticalContainer.scrollTop调用之前,我关闭了IgDialog。 – user1864392

回答

1

滚动相关的API是很基本的,你所使用的是相当多的可比性:

  • .igGrid("scrollContainer")仅仅是一种速记,这样你就不必使用#BookLabor_scrollContainer(它是一个内部ID)
  • .igGrid("virtualScrollTo", scrollContainerTop);就像使用虚拟滚动时的滚动顶部一样,您可能会使用虚拟滚动(无需更多代码就无法分辨),因此您可能需要尝试一下。

但是,是否有理由在单元编辑后调用dataBind? (我很难找到一个场景)。它无意以任何方式使用,并且在数据量更大的情况下会产生大量开销。如果您需要更新单元格的值,你应该使用更新的API,不需要重新绑定,且不需要为well..see后滚动: http://help.infragistics.com/jQuery/2012.2/ui.iggridupdating#methods

至于对话的更新再次提供了一个排内部使用对话框的模板,我强烈建议如果行编辑可以接受。示例: http://www.infragistics.com/products/jquery/sample/grid/row-edit-template

+0

我在等待Infragistics支持人员回复关于如何使用虚拟滚动查看是否可以解决问题的信息。我们使用我们的交互式网格来重新绑定数据源的原因(其中一些是基于在其他列中输入的内容来计算一列的值),因为我们在编辑时在列中的单元格上设置值时遇到列空白问题格。只要我们更新我们的数据源(它只是一个JSON类型的javascript数组),然后重新绑定到数据源,我们就没事了。 – user1864392

+0

当试图再次绑定到控制器/操作后渲染时,我们也遇到了IQueryable对象的问题。而不是获得预期的结果,网格会显示控制器/操作的名称,在每列中每行一个字符。 – user1864392

+0

好的,下面是另一个问题,它对我们的用户群来说实际上更重要:我们有一些命令按钮(它们是网格单元格的标准控件的一部分),它用过滤列表打开IgDialogs,但是 - 如果它们正在编辑单元格在同一行的另一列中,然后用鼠标点击其中一个按钮(我们有一些处理程序用于处理iggridupdatingeditcellended,这实际上应该不重要),但我们在Infragistics.js中发现了致命的运行时错误。 – user1864392