【问题标题】:Infragistics grid scrolling issueInfragistics 网格滚动问题
【发布时间】:2013-01-23 21:18:22
【问题描述】:

我有这段代码,如果正在编辑IgGrid control 中的单元格,它可以正常工作:

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 专家有什么技巧、窍门和提示吗?

【问题讨论】:

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

标签: infragistics ignite-ui iggrid


【解决方案1】:

与滚动相关的 API 非常基础,您使用的 API 非常相似:

  • .igGrid("scrollContainer") 只是一个简写,因此您不必使用#BookLabor_scrollContainer(它是一个内部 id)
  • .igGrid("virtualScrollTo", scrollContainerTop); 就像您使用虚拟滚动时的滚动顶部一样,您可能是(没有更多代码无法判断)所以您可能想尝试一下。

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

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

【讨论】:

  • 我正在等待 Infragistics 支持人员关于如何使用虚拟滚动查看是否能解决问题的回复。我们采用交互式网格重新绑定数据源(其中一些根据其他列中输入的内容计算一列的值)的原因是,当我们只在单元格中设置值时,我们遇到了列在编辑时被空白网格。只要我们更新我们的数据源(它只是一个 JSON 类型的 javascript 数组)然后重新绑定到数据源,我们就可以了。
  • 在尝试再次绑定到控制器/动作后渲染时,我们也遇到了 IQueryable 对象的问题。网格将在左侧列下方显示控制器/操作的名称,而不是获得预期的结果,每行一个字符。
  • 好的,这是另一个问题,这实际上对我们的用户社区来说更为关键:我们有一些命令按钮(它们对网格单元格的标准控件的一部分),它们打开带有过滤列表的 IgDialogs insde,但是- 如果他们正在编辑同一行另一列中的单元格,然后使用鼠标单击其中一个按钮(我们有一些 iggridupdatingeditcellended 处理程序,这并不重要),我们会在 Infragistics.js 中遇到致命的运行时错误。跨度>
  • 如果他们先使用 tab 或 enter 完成编辑,则不会出现问题。
  • 经过一些实验,我们可以实现垂直滚动。关键是在 iggridcellclick 事件处理程序上获取垂直滚动顶部位置,然后在 iggriddatarendered 事件处理程序内设置滚动位置。只要命令按钮打开一个 IgDialog 控件,这就会起作用,否则不会因为在这些情况下按钮单击处理程序和 iggridcellclick 事件将以相反的顺序触发。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 2012-10-20
相关资源
最近更新 更多