2010-01-19 30 views
11

dijit.form.FilteringSelect gần với những gì tôi cần. Tôi đã thử rất nhiều cách để làm những gì tôi muốn, nhưng là một người mới bắt đầu dijit tôi không bao giờ biết nếu tôi thậm chí đi đúng hướng.dijit.form.FilteringChọn với tìm kiếm chuỗi con

Khi tôi bắt đầu nhập vào một bộ lọc chọn, tôi chỉ thấy các tùy chọn bắt đầu với những gì tôi đã nhập. Giống như một truy vấn trên value + "*"
Điều tôi cần là xem bất kỳ tùy chọn nào có nội dung tôi nhập ở bất kỳ đâu. Giống như truy vấn trên "*" + value + "*"

Vì vậy, nếu có "Apple", "Chuối" và "Cam" và tôi nhập "e", tôi sẽ thấy "Apple" và "Cam". Nếu có thể, với chuỗi tìm kiếm nhấn mạnh: "Appl e", "Orang e"

Tôi nghĩ tôi cần một số lưu trữ dữ liệu thông minh, nhưng bất cứ nơi nào tôi đi trông giống như một ngõ cụt. Tôi có thiếu cái gì đó, hay tôi nên làm điều này theo một cách hoàn toàn khác?

Trả lời

15

Bạn muốn sử dụng queryExpr thuộc tính:

var f = new dijit.form.FilteringSelect({ 
... 
queryExpr: "*${0}*", 
... 
}, node); 

Thông báo các * trước và sau khi $ {0}.

+1

Lưu ý rằng nếu bạn đặt 'queryExpr' thành bất kỳ thứ gì khác với mặc định (bắt đầu từ tìm kiếm), bạn cũng có thể đặt' searchDelay: 1000' (1 giây hoặc hơn) b/c mỗi lần tìm kiếm, nó ghi đè lên những gì người dùng đã nhập w/thuật ngữ hàng đầu. –

+2

Thay thế cho độ trễ, bạn có thể đặt 'autoComplete' thành false. https://bugs.dojotoolkit.org/ticket/13915 –

0

Trong dự án của chúng tôi, chúng tôi đã giải quyết vấn đề này với một bản vá để dojo.data.util.filter ghi đè phương pháp patternToRegExp.

4

Hey! Bạn cần phải thêm queryExpr = "$ {0}" vào thành phần lọc thành phần.

Theo mặc định, đó là $ {0} *, có nghĩa là tìm kiếm các chuỗi bắt đầu bằng những gì bạn đã nhập.

Như một gợi ý cho người khác, trong JSP, tôi phải thay đổi truy vấn expr. để queryExpr = "\ $ {0}".

+0

các tài liệu cũng đề xuất rằng bạn nên sử dụng 'highlightMatch =" all "' kết hợp với điều này (nhưng nó dường như không làm việc hoàn toàn phù hợp với tôi như dojo1.3) –

+1

+1 cho gợi ý JSP. –

0

Sau rất nhiều thời gian để tôi có thể chạy, Mẹo Mada đã chính xác nhưng bỏ lỡ * trước và sau. QueryStr đúng (trong JSP) là '*\${0}*'

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