我在一个显示多条记录的页面上有一个列表视图。每条记录都有“ID”列(1,2,3,4 ......)。我想让用户过滤listview和文本字段。用户输入他/她搜索的“ID”值,点击“查找”按钮,列表视图应显示符合用户标准的记录。我添加了带有文本字段的表单webpart,并通过connections属性将其连接到列表,如下所述:
How do you filter a SharePoint list with a text field?
第一次效果很好:当用户键入值并按“搜索”时 - 列表视图会被过滤掉。
当用户尝试删除过滤器时会发生此问题。 1.用户无法通过“ID”列的下拉菜单删除过滤器。虽然列显示为已过滤(显示特殊图标),但它无法正常工作。 2.用户无法通过删除文本字段中的所有符号并再次单击“搜索”来删除过滤器。
我做错了什么?
我发现了类似的问题: http://www.dotnetspark.com/links/47412-unable-to-clear-filter-on-sharepoint-list.aspx
但没有提出解决方案:(
这是文本字段的临时解决方案 - 当它为空且用户点击“搜索”时,只需刷新整个页面。我不确定这是否是最佳实践(我更喜欢在没有页面刷新的情况下更新listview)。
<div onkeydown="T1keydown()">
<input type="text" name="T1" id="T1T1"/>
<input type="button" value="Search" onclick="T1apply()"/>
<script type="text/javascript">
function T1keydown() {
if (event.keyCode == 13)
T1apply();
}
function T1apply() {
var text = document.getElementById("T1T1").value;
if (text.length > 0)
{
_SFSUBMIT_;
return;
}
window.location.href=window.location.href;
}
</script>
</div>
答案 0 :(得分:0)
可能你会喜欢这个。只需添加内容编辑器/ Html表单webpart即可。并添加以下代码。这样您就可以更好地控制外观和想要做的事情。
$(document).ready(function() {
$("#search").click(function() {
var id = $("#IDVal").val();
var params = "FilterFeild1=ID&FilterValue1=" + id;
//alert(params);
location.href = location.href.split("?")[0] + "?" + params;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<input type="text" id="IDVal" />
<input type="button" id="search" value="Search" />