【问题标题】:search in sharepoint list using jQuery使用 jQuery 在共享点列表中搜索
【发布时间】:2020-06-02 04:26:07
【问题描述】:

我需要在 SharePoint 2013 网站主页中实现搜索,其中搜索结果可能来自列表名称为 ListA 的列表(列名称为项目名称和项目类别)。 搜索结果应仅来自上述两列。 搜索结果出现后,在选择特定搜索结果后,它应该重定向到其特定的详细信息页面(Projectdetails.aspx)

我们正在尝试在 SharePoint Designer 2013 中使用 jQuery/REST API。

请让我知道任何进一步的信息。 提前致谢!

【问题讨论】:

  • 您面临的问题是什么?
  • 我想知道如何实现上述场景

标签: jquery sharepoint-2013 sharepoint-designer


【解决方案1】:

如果您需要一个想法来做到这一点,您可以执行以下操作:

在 txt 文件中创建 HTML 设计

  • 这包括为搜索输入框或任何其他控件、搜索按钮和显示搜索结果的 div 创建 html。
  • 将此文件上传到网站的某处(例如样式库/html)
  • -

编写 Javascript

  • 编写 Javascript 来执行验证。
  • 为搜索按钮编写点击事件。使用 JSOM 检索基于 CAML 查询的列表项,该查询从控件获取输入并根据用户指定的值检索列表项。
  • 在函数的成功处理程序中,检索匹配项的 ID,并使用这些 id 用于创建动态 html 以重定向到项目的显示表单(详细信息),例如(<a href="https://serverurl/lists/yourlist/DispForm.aspx?ID=[id-of-matched-item]"><span>[Item's Title]</span></a>)
  • 使用动态 html(例如 $('#yourdivid').html(dynamicHTML))填充 div(您在 html 中创建的);
  • 将此 JS 文件上传到您网站的某个位置(例如样式库/JS)
  • 在您的 HTML 中引用此 JS 文件

创建内容编辑器 Web 部件

转到您要放置搜索控件的页面并编辑该页面。插入内容编辑器 webpart,并在 webpart 的配置中,引用 txt (html) 文件,然后保存页面。 希望这会有所帮助

EDIT:要使用 CAML 查询从列表中检索项目,您可以使用 JSOM

function GetSearchResults() {  //search button click handler
// Get textboxes' text.. 'tboxProjectName' and 'tboxProjectCategories' are id's that you assign to textboxes in your html.
var projectNameVal = $('#tboxProjectName').val();
var projectCategoryVal = $('#tboxProjectCategory').val();
//Get SP Context
var context = new SP.ClientContext.get_current();
    var web = context.get_web();
    var list = web.get_lists().getByTitle("ListA");
    var camlQuery = new SP.CamlQuery();
    //you can modify query text according to your data types and applying operators different than <Contains> e.g. <Eq>, <Lt>, <Gt> etc.
    var camlText = '<View><Query><Where><Or><Contains><FieldRef Name="Project_x0020_Name"/><Value Type="Text">' + projectNameVal +'</Value></Contains><Contains><FieldRef Name="Project_x0020_Category"/><Value Type="Text">' + projectCategoryVal +'</Value></Contains></Or></Where></Query></View>';
camlQuery.set_viewXml(camlText);
this.collListItem = list.getItems(camlQuery);
context.load(collListItem);
context.executeQueryAsync(getResultsSuccess,onFailure);
}

function getResultsSuccess() {
    var listItem;
    var html = '';
    var dispFormUrl = "https://yourserver.com/lists/lista/dispform.aspx?ID="
    var listEnumerator = collListItem.getEnumerator();
    while (listEnumerator.moveNext()) {
        listItem = listEnumerator.get_current();
        html += '<a href = "'+dispFormurl+listItem.get_item("ID")+'"><span>'+listItem.get_item("Title")+'</a> <br />'

}
$('#yourdivID').html(html)
    }
function onFailure(sender,args)
{
 alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

【讨论】:

  • 一个示例代码真的很有帮助,我是编码初学者,希望你能理解。我从未使用过 CAML 查询
  • 我已在答案中添加了代码,可能需要稍作修改以适应您的需求。
  • @Murad Haider- 在 var context 行遇到一个错误,它说“无法读取未定义的属性 'get_current'”我在 CAML 查询中提出问题,你提到了 'projectNameVal ' 和 'projectCategoryVal',这些是我们在文本框中提供的值吗?如果是,我们是否需要它们在任何地方初始化?感谢您的帮助!
  • 我添加了 SP.SOD.executeFunc('sp.js', 'SP.ClientContext', GetSearchResults);在函数之前,但仍然存在错误
  • 'projectNameVal' 和 'projectCategoryVal' 应该是最终会获取文本框值的变量,您可以在搜索按钮单击处理程序中创建/初始化这些变量。对于“未定义”错误,您需要确保 SharePoint 加载了必要的 JS 文件,然后才能获取客户端上下文。为此,您可以按需使 SharePoint 加载脚本: SP.SOD.executeFunc("sp.js", "SP.ClientContext", function() { yourseachfunction(); });在您的点击处理程序中使用它
猜你喜欢
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多