2013-10-23 2 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 

을 그래서 내가 SM을 입력하면, 그것은이의 SPService 가능한 경우

처음 2 개 행을 표시해야합니다, 어떤 예를 알려 주시기 바랍니다 이것이 달성 될 수 있는지의 여부가 도움이 될 것입니다. 전체 코드를 묻는 것이 아니라 최소한 출발점을 묻습니다.

답변

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에서 웹 서비스를 보는 것은 사용자가 브라우저에서 목록으로 이동 한 것처럼 보안 조정 된 데이터를 반환합니다. –

관련 문제