2013-04-19 28 views
6

Tôi đang cố lọc kết quả của mình khỏi Cuộc gọi còn lại.OData substringof hoặc startswith trả lại tất cả các mục

$.ajax({ 
    type: "GET", 
    headers: { 
     "Accept": "application/json;odata=verbose" 
    }, 
    dataType: "JSON", 
    url: _spPageContextInfo.webServerRelativeUrl + "/_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$startswith('Title','" + request.term + "') eq true", 
    success: function (data) { 
    }, 
    error: function (ex) { 
    } 
}); 

Trong Danh sách Liên hệ của tôi đang cố gắng để lấy lại quyền sở hữu và Id cho Items mà bắt đầu với một chuỗi hoặc có String đâu đó trong nó, ở đây ví dụ đó là tên của ai đó.

Tôi cũng đã thử nó với substringof:

"/_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$substringof(" + request.term + ",'Title') eq true" 

mà cũng mang lại kết quả tương tự.

Nó cung cấp cho tôi tất cả các mục danh sách từ danh sách và không có bộ lọc nào được áp dụng. tôi xây dựng các Url cho phần còn lại sau khi xem xét ở đây Programming using the SharePoint 2013 REST service Giống như Schema cho đó tôi nghĩ rằng Url trông ok, nhưng nó không có vẻ như vậy :)

Edit:

Áp dụng $filter như trong OData Uri ước mang lại cho tôi những lỗi sau:

{"error":{"code":"-1, Microsoft.SharePoint.SPException","message":{"lang":"en-US","value":"The query is not valid."}}} 

thử nó với sau Query Strings:

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof(m,'Title') eq true 

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m','Title') eq true 

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m',Title) eq true 

Trả lời

10

Tôi đã quản lý để có được bộ lọc có chuỗi con trả lại kết quả chính xác khi tôi xóa "eq true".

Sử dụng một trong các chuỗi truy vấn của bạn, nó sẽ hoạt động như thế này:

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m',Title) 

tôi đã không kiểm tra bất kỳ chức năng khác, nhưng ít nhất, tương tự xảy ra với startswith chức năng.

0

Kiểm tra http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/ để biết quy ước uri chính xác.

Nên "/ _api/danh sách/getByTitle ('Liên hệ')/mục? $ Select = Tiêu đề, Id & $ filter = substringof (" + request.term + " 'Title') eq true"

vì vậy, với $ lọc bao gồm

+0

vui lòng xem chỉnh sửa của tôi. Khi tôi áp dụng bộ lọc $ nó mang lại cho tôi một lỗi rằng truy vấn không ở định dạng đúng – Mark

+0

Có thể vì sự kết hợp/thứ tự của $ select, có vẻ như nó sẽ hoạt động. http://sharepoint.mindsharpblogs.com/NancyB/Lists/Posts/Post.aspx?List=b6efd474-248a-4b16-ab88-afdb6fa31b65&ID=25. Bạn có thể thử chỉ với bộ lọc không? – Rolfvm

+0

Đã thử chỉ với bộ lọc mà cùng một lỗi đang trả về. Có lẽ có điều gì đó thiếu nhưng tôi không hiểu. Khi tôi nhìn vào các quy ước, có vẻ như là ok – Mark

0

tôi đã cố gắng truy vấn của bạn URI trên thiết bị đầu cuối của tôi và áp dụng một số thay đổi: - tham số thứ hai của chuỗi con không phải là một chuỗi, vì vậy tôi loại bỏ các apostropes

Sau này tôi nhận được kết quả:

http://jaydata.org/examples/Northwind.svc/Products? $ Select = Product_ID, PRODUCT_NAME & $ filter = substringof ('CH', PRODUCT_NAME)

endpoint của tôi là tiêu chuẩn WCF Data Service, và bộ lọc đang làm việc.

Nếu thay đổi URI vẫn trả về tất cả các bản ghi, đó sẽ là thủ thuật SherePoint tôi đoán. Điều gì sẽ xảy ra nếu bạn đặt 'zzz' hoặc một số chuỗi ngẫu nhiên trong bộ lọc?

+0

Thử nghiệm nó cũng một lần nữa với chuỗi đó, nhưng nó chỉ trả lại cùng một lỗi "Truy vấn không hợp lệ". khi tôi đang sử dụng thẻ lọc $ – Mark

6

Đối với bất cứ ai nhìn vào câu hỏi này, tôi có thể báo cáo rằng

/_api/web/lists/GetByTitle('Applications')/items?$filter=startswith(Title,'1AAJ') 

IS làm việc cho tôi.

-1

Ngoài ra, phương pháp chứa hoạt động và tôi đã có khả năng tương thích tốt hơn với nó. Cú pháp là:

api/People?$filter=contains(LastName,%27Smith%27)&$select=LastName,FirstName 
+0

chứa tham số không hoạt động, ít nhất trong Sharepoint 2013 – Alberto

+0

Tham số chứa chắc chắn hoạt động, như được tham chiếu tại http://www.odata.org/getting-started/basic-tutorial/. Đó là một trong những kết hợp bộ lọc một phần dễ dàng hơn. Tôi không có Sharepoint 2013, vì vậy tôi không thể kiểm tra nó, nhưng nó làm việc cho bất cứ ai sử dụng một OData hiện đại và tiêu chuẩn. –

+1

Xin lỗi lỗi của tôi, tôi nghĩ chủ đề có liên quan đến SP 2013. Bạn có thể chỉnh sửa câu trả lời để tôi có thể xóa bỏ phiếu giảm giá của mình không? cảm ơn – Alberto

Các vấn đề liên quan