2013-10-23 31 views
0

我不確定SPServices是否是執行以下操作的正確框架。如何使用SPServices自動篩選清單列表

我有一個應用程序頁面,默認情況下會顯示一個共享點列表,其中有16,000個項目。 默認情況下,它顯示基於名稱的前30個列表項目。

我想放一個文本框,當用戶開始輸入時,網格會自動減少,而不必按下回發按鈕。

比方說SharePoint列表有:

client code, client name, ClientOwner 
0001, google, john smith 
0002, dell, maria smith 
0003, microsoft, bill gates 

所以,一旦I型SM,它應該顯示第2行

如果這是可能的SPService,請讓我知道,任何例子這是否可以實現會有所幫助,我不是要求一個完整的代碼,而是至少有一個起點。

回答

1

下面是我剛剛寫的一個庫中的一些通用代碼。基本上,我在列表中存儲了大量鏈接,用戶可以通過鍵入部分名稱來搜索鏈接。

var input = "example string" 

var comparisons = []; 
var splitInput = this.input.split(" "); 

for (var comparison in splitInput) { 
    if (splitInput[comparison].length > 0) { 
     comparisons.push(splitInput[comparison]); 
    } 
} 

if (comparisons.length == 0) { 
    return; 
} 

var comparisonString = ""; 
var levels = 0; 

for (i = 0; i < comparisons.length; i++) { 
    if (comparisons.length > 1 && i < comparisons.length - 1) { 
     comparisonString += "<And>"; 
     levels++; 
    } 

    comparisonString += "\ 
     <Contains>\ 
      <FieldRef Name='Title' />\ 
      <Value Type='Text'>" + comparisons[i] + "</Value>\ 
     </Contains>"; 
} 

for (i = 0; i < levels; i++) { 
    comparisonString += "</And>"; 
} 

var internalLinks = []; 
var externalLinks = []; 

$().SPServices({ 
    operation: "GetListItems", 
    webURL: "/path/to/site", 
    listName: "exampleList", 
    async: false, 
    CAMLViewFields: '\ 
     <ViewFields>\ 
      <FieldRef Name="Title" />\ 
      <FieldRef Name="Site_x0020_Address" />\ 
     </ViewFields>', 
    CAMLQuery: '\ 
     <Query>\ 
      <Where>' + comparisonString + '</Where>\ 
      <OrderBy>\ 
       <FieldRef Name="Title" Ascending="True" />\ 
      </OrderBy>\ 
     </Query>', 
    CAMLRowLimit: 15, 
    completefunc: function (jqXHR, Status) { 
     $(jqXHR.responseXML).SPFilterNode("z:row").each(function (i, row) { 
      var _temp = $(row).attr("ows_Site_x0020_Address").split(", "); 

      if (_temp.length > 1 && _temp[0].length > 0 && _temp[1].length > 0) { 
       if (_temp[0].search("/mysite\.com/") < 0) { 
        externalLinks.push({ 
         link: "<a href='" + _temp[0] + "'>" + _temp[1] + "</a>" 
        }); 
       } else { 
        internalLinks.push({ 
         link: "<a href='" + _temp[0] + "'>" + _temp[1] + "</a>" 
        }); 
       } 
      } 
     }); 
    } 
}); 
+0

這是否會過濾掉您沒有自動訪問的列表項? –

+0

是的,所有的客戶端腳本本質上都會承擔客戶的角色。因此,從SharePoint查看Web服務將返回安全修剪數據,就像用戶導航到瀏覽器中的列表一樣。 –