C#中使用JQueryUI中Autocomplete插件

服务器端后台代码:

 1          private string GetModelNames() {

 2             return @"[

 3               {

 4                   'value': 'jquery',

 5                   'label': 'jQuery',

 6                   'desc': 'the write less, do more, JavaScript library',

 7               },

 8               {

 9                   'value': 'jquery-ui',

10                   'label': 'jQuery UI',

11                   'desc': 'the official user interface library for jQuery',

12               },

13               {

14                   'value': 'sizzlejs',

15                   'label': 'Sizzle JS',

16                   'desc': 'a pure-JavaScript CSS selector engine',

17               }

18             ]".Replace("'", "\""); 19 }

 

 

第一种方式:动态数据源

Aspx页面代码:

 

 1                $("#ModelName2").autocomplete({

 2                 minLength: 0,

 3                 source:function( request, response ) {

 4                     $.ajax({

 5                         url: "SystemAjaxData.ashx?selectType=getModelNames",

 6                         success: function (data) {

 7                             var jsonData = eval("(" + data + ")");

 8                             response(jsonData);

 9                         }

10                     });

11                 },

12                 focus: function (event, ui) {

13                     $("#ModelName2").val(ui.item.label);

14                     return false;

15                 },

16                 select: function (event, ui) {

17                     $("#ModelName2").val(ui.item.label);

18                     $("#ModelNameValue2").val(ui.item.value);

19 

20                     return false;

21                 }

22             });

   由于Ajax返回的是字符串,因此必须用eval方法转换成Json对象再返回给Autocomplete插件使用。

 

第二种方式:固定数据源方式,并且动态改变下拉选择框样式

 

 1      var projects = [

 2       {

 3         value: "jquery",

 4         label: "jQuery",

 5         desc: "the write less, do more, JavaScript library",

 6         icon: "jquery_32x32.png"

 7       },

 8       {

 9         value: "jquery-ui",

10         label: "jQuery UI",

11         desc: "the official user interface library for jQuery",

12         icon: "jqueryui_32x32.png"

13       },

14       {

15         value: "sizzlejs",

16         label: "Sizzle JS",

17         desc: "a pure-JavaScript CSS selector engine",

18         icon: "sizzlejs_32x32.png"

19       }

20     ];

21 

22     $("#ModelName2").autocomplete({

23                 minLength: 0,

24                 source:projects,

25                 focus: function (event, ui) {

26                     $("#ModelName2").val(ui.item.label);

27                     return false;

28                 },

29                 select: function (event, ui) {

30                     $("#ModelName2").val(ui.item.label);

31                     $("#ModelNameValue2").val(ui.item.value);

32 

33                     return false;

34                 }

35             })

36             .autocomplete("instance")._renderItem = function (ul, item) {

38                 return $("<li>")

39                   .append("<a>" + item.label + "<br>" + item.desc + "</a>")

40                   .appendTo(ul);

41             };

 第三种方式:缓存后台数据源

 1 var cache = {};

 2             $("#ModelName2").autocomplete({

 3                 minLength: 0,

 4                 source: function( request, response ) {

 5                     var term = request.term;

 6                     if ( term in cache ) {

 7                         response( cache[ term ] );

 8                         return;

 9                     }

10                     $.ajax({

11                         url: "SystemAjaxData.ashx?selectType=getModelNames",

12                         success: function (data) {

13                             var jsonData = eval("(" + data + ")");

14                             cache[ term ]=jsonData;

15                             response(jsonData);

16                         }

17                     });

18                 },

19                 focus: function (event, ui) {

20                     $("#ModelName2").val(ui.item.label);

21                     return false;

22                 },

23                 select: function (event, ui) {

24                     $("#ModelName2").val(ui.item.label);

25                     $("#ModelNameValue2").val(ui.item.value);

26 

27                     return false;

28                 }

29             });

 

你可能感兴趣的:(autocomplete)