2011-12-20 57 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"); 

這個偉大的工程。