2011-12-20 58 views
1

我有jQuery的自动完成与Ajax调用完成。我正在做我的代码后面的方法过滤器。我不想在用户界面中对它们进行过滤。怎么做。更具体地说,如果用户输入'St.'例如,我返回的值是'圣'以及结果中的“圣”。但jquery没有显示'Saint'的结果。我怎样才能让jquery自动完成显示'Saint'?不要过滤结果在jquery/asp.net自动完成

代码中的Jquery

function GetNames(text) { 
$.ajax({ 
type: "POST", 
url: "Default.aspx/GetSchools", 
dataType: "json", 
data: '{ "data":"' + text + '"}', 
contentType: "application/json; charset=utf-8", 
success: function(data) { 
$('#university').autocomplete({ 
source: data.d, 
focus: function(event, ui) { 
$('#university').val(ui.item.Descr); 
return false; 
}, 
select: function(event, ui) { 
$('#university').val(ui.item.Descr); 
$('#universityID').val(ui.item.UnivCode); 
return false; 
} 
}); 
} 
}); 
} 

代码隐藏在.cs文件

public static List<DataClass.School> GetSchools(string data) 
     { 
      DataTable dt = (DataTable)HttpContext.Current.Session["Schools"]; 

      data = data.ToLower(); 
      Debug.WriteLine(data); 

      var ret = new List<TestApplication.DataClass.School>(); 
      ret = (from l in dt.AsEnumerable() 
        let s = l["Descr"].ToString().ToLower() 
        where (s.Contains(data) || s.Contains("saint")) 
        select new TestApplication.DataClass.School 
        { 
         Descr = l["Descr"].ToString(), 
         UnivCode = l["UnivCode"].ToString() 
        }).Take(20).ToList(); 

      Debug.WriteLine(ret.Count.ToString()); 

     return ret.ToList(); 
     } 
+0

如果您向我们显示您的代码,我们可以更好地帮助 – 2011-12-20 18:10:19

+0

邮政编码请! – 2011-12-20 18:13:10

+0

添加了代码。 – Shankar 2011-12-20 18:22:27

回答

0

它应该是为源设置为类似于在jqueryui documentation

+0

我已设置源,但我不想过滤结果。例如。正如我前面提到的,如果用户键入Jr - 我将返回包含Junior的结果。我不希望那些被jquery过滤。 – Shankar 2011-12-20 18:21:54

+0

这与jquery无关。结果来自服务器。这是您查询结果的位置。所以如何查询结果将决定返回给客户端的内容。 – 2011-12-20 18:24:16

+0

即使返回结果,并非所有值都显示在下拉列表中。那是我遇到问题的地方。如果您看到上面的代码和可能的硬编码Jr和Junior,那么如果您键入Jr而不是Junior,则自动完成中的下拉列表将只显示Jr。我不想过滤器发生。 – Shankar 2011-12-20 18:28:48

0

的示例中的URL一样简单好的。它表示我可以更改jQuery。由于我在代码隐藏中筛选结果,所以我更改了我的jQuery而不是过滤任何内容。在jQuery的ui.js的自动完成扩展方法改为

var matcher = new RegExp($.ui.autocomplete.escapeRegex(''), "i"); 

这个伟大的工程。