我们拥有包含大量列的大型SharePoint列表。我们的用户忘记了他们正在查看哪些单元格,因为滚动后标题会消失(无法像Excel一样冻结标题)。
我们想尝试将工具提示添加到单元格项目中,因此当它们悬停在单元格项目上时,将显示带有列名称的工具提示。
有没有人曾尝试过这样做过?
我有以下代码,它最初在加载时起作用,但在用户对列表进行排序,过滤或切换到编辑模式后停止工作:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript">
jQuery(
function()
{
$('td').hover
(
function()
{
var idx = jQuery(this).parent().children().index(jQuery(this));
jQuery(this).attr('title',jQuery(this).parent().parent().parent().find('th').eq(idx).text());
jQuery('div.ms-core-brandingText').html(jQuery(this).parent().parent().parent().find('th').eq(idx).text());
}
)
}
);
</script>
答案 0 :(得分:1)
您的代码停止运行,因为SharePoint会重新加载列表内容。将客户端脚本添加到SharePoint页面时,这是一个常见问题。
首先,您实际上应该能够使用冻结标题呈现视图。是的,它不是开箱即用的,但有第三方数据表工具可用。
另一种选择是通过Client Side Rendering选项包含您的代码。这是一个广泛的主题,所以可能第一步是谷歌。
答案 1 :(得分:0)
好的,靠近,使用CSR而不仅仅是jQuery。这有效,但需要手动指定每个字段。正在寻找一种方法将其应用于视图中的每个字段。
<script type="text/javascript">
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
Templates: {
Fields: {
'Comments': {
'View': function (ctx) {
return String.format('<span title="{0}">{1}</span>', this.FieldTitle, ctx.CurrentItem.Comments);
}
},
'Name': {
'View': function (ctx) {
return String.format('<span title="{0}">{1}</span>', this.FieldTitle, ctx.CurrentItem.Name);
}
}
}
}
});
答案 2 :(得分:0)
自从应用过滤/排序后,就会重新加载列表视图。
以下函数可用于在SharePoint 2013中悬停列表项单元格:
function hoverListItems()
{
$('tr.ms-itmhover td').hover(
function() {
var $td = $(this);
var $th = $td.closest('table').find('th').eq($td.index());
$td.attr('title',$th.text());
}
);
}
由于在SharePoint 2013中,客户端呈现(CSR
)是默认呈现模式,下面的示例演示了如何使用{{1}注册hoverListItem
函数事件
OnPostRender
注意:使用指定的技术List Item hover也可以使用 应用排序/过滤。
答案 3 :(得分:0)
工具提示解决方法:
我一直在使用的解决方案是一个简单的非HTML解决方案。我只是创建一个项目的链接;插入它自己的地址(这样它就不会去任何地方);然后在新的LINK选项卡下,在“描述”框中键入所需的提示。
保存页面,然后尝试将鼠标悬停在新链接上,voilà
希望有所帮助!