我试图通过添加一些客户端功能来使我的数据视图看起来更好看。 在这种情况下,我创建了一个脚本,让用户将鼠标悬停在一行上并显示其详细信息。 结构看起来像这样:
脚本块包含一些基本的jquery:
function x$(idTag){
idTag = idTag.replace(/:/gi, "\\:");
return("#"+idTag);
}
var dataView = x$('#{id:dataView1}');
var detail;
$(dataView + ' > table > tbody > tr').mouseenter(function (e) {
detail = $(this).attr('id').replace(':_row', '_detail');
detail = x$(detail);
$(detail).show();
});
$(dataView + ' > table > tbody > tr').mouseleave(function () {
$(detail).hide();
});
一切正常,直到我点击其中一个行展开/折叠按钮,此时脚本代码停止工作。 我的猜测是它与部分刷新有关,当我在数据视图中展开或折叠某个级别时会发生这种情况,并且它不会重新加载脚本块或重新加载错误。 如果我关闭部分刷新它继续工作,但当然整页刷新只是为了扩展或折叠一行是太慢而不现实可用
有什么想法吗?
答案 0 :(得分:0)
jQuery代码仅在它可以在页面上看到的项目上运行 - 您需要更改选择条件,以便它作为委派事件运行。在这种情况下,无论何时在数据视图上移动mouseevent,它都会检测触发事件的选择器,如果匹配,则它将相应地运行。这样它将在所有行上运行,无论它们是否在partialRefresh之前或之后“在页面上”。
试试这个
$(dataView).on ('mouseenter', 'table > tbody > tr', function (e) {
detail = $(this).attr('id').replace(':_row', '_detail');
detail = x$(detail);
$(detail).show();
});
$(dataView).on('mouseleave', 'table > tbody > tr', function () {
$(detail).hide();
});
代码未经测试,因为我没有您的环境:)
答案 1 :(得分:0)
感谢另一位消息来源在这里得到了快速帮助。
将dataView和scriptBlock放在面板中,然后将dataView的refreshID设置为面板的ID。