可能是我见过的最糟糕的事情:我想在加载文档后加载网格。由于网格(infragistics)似乎延迟了,我设置了一个间隔,在我尝试获取所需元素的区间内,如果我找不到它,我再等500毫秒:
function trySetEditMode(obj) {
var testObj = $('#' + obj.btnId).parents("tr[type='row']").get(0);
if (testObj && testObj._object){
clearInterval(_intervalId);
有趣的是:即使我看到使用IE调试工具的行也在那里,它只是找到它。当我用鼠标移动时它就可以工作了。这种效果似乎是完全随机的。
有谁知道这是怎么可能的?我试着用.focus,.blur等修补arorund,但似乎没什么用。
btw:obj是我的自定义对象,按钮id是按钮的clientid并且在那里。例如:
$('#' + obj.btnId).parents('tr').length
返回一个长度。
这可能是来自infragistics控件的错误吗?如果是,我怎么能模拟这个mouseMove?
祝你好运
的Matthias
答案 0 :(得分:1)
在客户端上创建行对象的成本很高,因此它们是按需创建的,以避免在最初创建所有行对象时产生大的性能损失。鼠标悬停或使用作为client side object model的一部分提供的get_row()方法时,实际创建这些对象。因此,推荐的方法是使用客户端对象模型来获取对行的引用,例如以下将获得第一行:
var grid = $find("webDataGrid1");
var row = grid.get_rows().get_row(0);
答案 1 :(得分:0)
也许有人会在infragistics webdatagrid中出现这个问题: 旁注:我不相信ig支持无法告诉我: Grid有点lazyLoaded,dom被加载但是当你用鼠标移动时,ig相关的属性和后面的对象才被加载。所以我等了多久并没有关系,对象不在那里。
由于我没有时间得到正确的解决方案,我基本上手动将鼠标悬停在单元格上的事件上。你做了什么并不重要,但我用第一个测试它并且它正常工作。
//The grid doesnt load data (except the first row) until the mouse did hover over it
//Get a cell, and hover over it
var parentTd = btn.parents('td').first();
var cell = parentTd.siblings()[0];
var rows = $find('dgrRoles').get_rows();
if (cell && rows) {
cell.target = cell;
rows._onMouseOver(cell);
}