2010-11-20 4 views
6

là có bất kỳ kiểm soát hoặc Jquery Plugin tồn tại cho asp.net Auto Complete DropDownList? nếu có, vui lòng liên kết mẫu tại đây. Tôi không muốn sử dụng asp.net kiểm soát ajax toolkitASP.NET Auto Complete DropDownList

Trả lời

1

Tôi không biết nếu điều này là những gì bạn đang tìm kiếm nhưng có một đẹp Facebook giống như kiểu trước danh sách ở đây:

https://github.com/emposha/FCBKcomplete

Đây là một plugin jQuery và sử dụng AJAX để gọi dịch vụ web để tải các mục cho danh sách khi bạn nhập và thực hiện một số bộ nhớ đệm thông minh để lưu trên các cuộc gọi dịch vụ web. Như tôi đã nói, có thể không chính xác những gì bạn đang tìm kiếm, nhưng nó đáng giá ít nhất.

Ngoài ra, hãy kiểm tra tính năng tự động hoàn thành của jQuery.

http://jqueryui.com/demos/autocomplete/

+0

Nhưng làm thế nào tôi có thể sử dụng jQuery UI Autocomplete với asp.net DropDownList? – Shahin

+0

tốt, bạn thực sự sẽ không muốn sử dụng danh sách thả xuống asp.net trong trường hợp này. bạn muốn sử dụng tính năng tự động điền jquery và điền danh sách với các giá trị có thể có của danh sách thả xuống của bạn. thay cho danh sách thả xuống, bạn đặt đầu vào với id và runat = 'server' được chỉ định, sau đó kiểm tra giá trị đó trên phía máy chủ khi trang đăng lại. –

+1

có thể không rõ ràng. xem tại đây: http://jqueryui.com/demos/autocomplete/ và đảm bảo xem nguồn để xem mã ví dụ. mọi thứ sẽ trở nên rõ ràng hơn với bạn bằng cách đọc nguồn đó. –

0
 //just put this script in your page and call the class combobox2 in your dropdownlist 


     <script type="text/javascript"> 
        (function ($) { 
         $.widget("custom.combobox2", { 
          _create: function() { 
           this.wrapper = $("<span>") 
           .addClass("custom-combobox2") 
           .insertAfter(this.element); 
           this.element.hide(); 
           this._createAutocomplete(); 
           this._createShowAllButton(); 
          }, 
          _createAutocomplete: function() { 
           var selected = this.element.children(":selected"), 
           value = selected.val() ? selected.text() : ""; 
           this.input = $("<input style='width:auto;'>") 
           .appendTo(this.wrapper) 
           .val(value) 
           .attr("title", "") 
           .addClass("custom-combobox2-input ui-widget ui-widget-content ui-state-default ui-corner-left") 
           .autocomplete({ 
            delay: 0, 
            minLength: 0, 
            source: $.proxy(this, "_source") 
           }) 
           .tooltip({ 
            tooltipClass: "ui-state-highlight" 
           }); 
           this._on(this.input, { 
            autocompleteselect: function (event, ui) { 
             ui.item.option.selected = true; 
             this._trigger("select", event, { 
              item: ui.item.option 
             }); 
            }, 
            autocompletechange: "_removeIfInvalid" 
           }); 
          }, 
          _createShowAllButton: function() { 
           var input = this.input, 
           wasOpen = false; 
           $("<a>") 
           .attr("tabIndex", -1) 
           .attr("title", "Show All Items") 
           .appendTo(this.wrapper) 
           .button({ 
            icons: { 
             primary: "ui-icon-triangle-1-s" 
            }, 
            text: false 
           }) 
           .removeClass("ui-corner-all") 
           .addClass("custom-combobox2-toggle ui-corner-right") 
           .mousedown(function() { 
            wasOpen = input.autocomplete("widget").is(":visible"); 
           }) 
           .click(function() { 
            input.focus(); 
            // Close if already visible 
            if (wasOpen) { 
             return; 
            } 
            // Pass empty string as value to search for, displaying all results 
            input.autocomplete("search", ""); 
           }); 
          }, 
          _source: function (request, response) { 
           var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
           response(this.element.children("option").map(function() { 
            var text = $(this).text(); 
            if (this.value && (!request.term || matcher.test(text))) 
             return { 
              label: text, 
              value: text, 
              option: this 
             }; 
           })); 
          }, 
          _removeIfInvalid: function (event, ui) { 
           // Selected an item, nothing to do 
           if (ui.item) { 
            return; 
           } 
           // Search for a match (case-insensitive) 
           var value = this.input.val(), 
           valueLowerCase = value.toLowerCase(), 
           valid = false; 
           this.element.children("option").each(function() { 
            if ($(this).text().toLowerCase() === valueLowerCase) { 
             this.selected = valid = true; 
             return false; 
            } 
           }); 
           // Found a match, nothing to do 
           if (valid) { 
            return; 
           } 
           // Remove invalid value 
           this.input 
           .val("") 
           .attr("title", value + " didn't match any item") 
           .tooltip("open"); 
           this.element.val(""); 
           this._delay(function() { 
            this.input.tooltip("close").attr("title", ""); 
           }, 2500); 
           this.input.data("ui-autocomplete").term = ""; 
          }, 
          _destroy: function() { 
           this.wrapper.remove(); 
           this.element.show(); 
          } 
         }); 
        })(jQuery); 
        $(function() { 
         $(".combobox2").combobox2(); 
         $(".combobox2").combobox2({ 
          select: function (event, ui) { 
           var f = document.getElementById("<%=form1.ClientID%>"); 
            f.submit(); 
           } 
          }); 
         }); 
       </script> 


<asp:DropDownList ID="DDL_Groups4_Assign" runat="server" AppendDataBoundItems="True" AutoPostBack="True" CausesValidation="True" OnSelectedIndexChanged="DDL_Groups4_Assign_SelectedIndexChanged" Width="250px" CssClass="combobox2"> 
      <asp:ListItem Selected="True">Select</asp:ListItem> 
              </asp:DropDownList>